我可以只修改 geom_point() 散点图的图例在 R / ggplot2 中以便条目具有特定的形状吗?

问题描述

This answer 解释了如何创建与 R 和 ggplot2 中绘制的数据无关的图例。那里的图例只使用颜色。我还想使用标记形状(并将尺寸重新调整为大一点,以便更容易区分)。

据我了解,可以使用 guides(shape = guide_legend(override.aes = list(shape = [...]))) 控制 ggplot2 图例中的形状和大小(如 this answer 中建议的那样)。

不幸的是,我没有成功。不幸的是,下面修改后的代码仍然产生与原始(来自 here)相同的图形,而 guides() 中的形状和标记大小规格没有影响。 (请注意,问题是关于图例,只是图例,而不是情节本身。对于情节本身,更改形状和标记很容易并且效果很好。)

我做错了吗?还是我误解了图例的工作原理(例如,每个图例我只能有一个属性)或 guide_legend 如何修改图例?

library(tidyverse)
the_colors <- c("#e6194b","#3cb44b","#ffe119","#0082c8","#f58231","#911eb4","#46f0f0","#f032e6","#d2f53c","#fabebe","#008080","#e6beff","#aa6e28","#fffac8","#800000","#aaffc3","#808000","#ffd8b1","#000080","#808080","#ffffff","#000000")

color_df <- data.frame(the_colors,the_labels = seq_along(the_colors),the_shapes=c(1:22))

the_df <- data.frame("col1"=c(1,2,1),"col2"=c(2,1,"col3"=c(1,3,4))

the_plot <- 
  ggplot() + 
    geom_point(data = color_df,aes(x = the_df$col1[[1]],y = the_df$col2[[1]],color = the_colors)) +
    guides(shape = guide_legend(override.aes = list(shape = color_df$the_shapes,size=5))) +
    scale_color_identity(guide = 'legend',labels = color_df$the_labels) +
    geom_point(data=the_df,aes(x=col1,y=col2),color=the_colors[[4]],shape=the_df$col3,size=5) 

print(the_plot)
ggsave("test_plot.pdf",plot=the_plot,width=10,height=8)

注意:我完全意识到这段代码没有按照预期的方式使用 R 和 ggplot2。这常常遭到反对。然而,我正在寻找这个功能,它在 R / ggplot2 中没有提供:控制图例独立于情节并且不干扰情节。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)