如何在ggplot2中绘制后更改数据子集的颜色/形状/大小

时间:2014-12-21 23:52:11

标签: r ggplot2

在很多情况下,我使用ggplot来创建漂亮的图形,但我想要使用属于某个组的数据的颜色/形状/大小(例如,突出显示它)。

我了解在首次创建绘图时如何为每个组设置不同的属性。但是,我想知道是否有一个简单的命令可以在创建绘图后更改属性 ,最好不必指定所有其他子集的属性)。

作为示例,请考虑以下代码:

library(ggplot2)
x     = seq(0,1,0.2)
y     = seq(0,1,0.2)
types = c("a","a","a","b","b","c")
df = data.frame(x,y,types)

table_of_colors = c("a"="red","b"="blue","c"="green")
table_of_shapes = c("a"=15,"b"=15,"c"=16)

my_plot = ggplot(df) + 
  theme_bw() + 
  geom_point(aes(x=x,y=y,color=types,shape=types),size=10) + 
  scale_color_manual(values = table_of_colors) + 
  scale_shape_manual(values=table_of_shapes)

产生以下图:

<code>my_plot</code>

我想知道:

  1. 有没有办法改变绿点的颜色(类型==“c”)而不必输入其他点的颜色?

  2. 有没有办法改变蓝/红点的形状(在%c中键入%(“a”,“b”))而不必输入所有其他点的形状?< / p>

  3. 所有点的大小目前都设置为10.有没有办法将的大小绿色点改为15,同时保持所有剩余点的大小为10

  4. 我不确定这是否是现有功能,但欢迎黑客攻击(只要更改将反映在图例中)。

1 个答案:

答案 0 :(得分:3)

这对我来说似乎有些苛刻,但下面的代码解决了清单中的第1项和第2项:

my_plot + 
  scale_colour_manual(values=c(table_of_colors[1:2],c="green")) +
  scale_shape_manual(values=c(a=4,b=6, table_of_shapes[3]))

我想也许你可以用类似scale_size_manual(values=c(10,10,15))的东西来改变大小,但这不起作用,也许是因为大小是硬编码的,而不是以美学开头。

根据需要创建新的形状,颜色等矢量可能会更清晰,而不是像上面那样进行单独的 ad hoc 更改。