当超过6个因子水平时,循环通过点形状

时间:2013-05-29 11:58:45

标签: r ggplot2

shape中使用美学地图geom_point时,如果出现的因素数超过6,我会收到以下消息:

"形状调色板最多可处理6个离散值,因为超过6个变得难以辨别;你有15.考虑手动指定形状。如果你必须拥有它们。"

我倾向于同意限制不同形状数量的原则,但是当使用形状与颜色结合时,这应该不是问题。

是否有一种优雅的方法让ggplot循环遍历形状,即设置symbol7 = symbol1等?现在它只是省略了因子水平>的点。 6。

4 个答案:

答案 0 :(得分:10)

plot symbols

你可以看到你有很多形状的可能性。当您达到> 6时,您必须手动设置数字:

    ggplot(data=dat1, aes(x=x, y=y,group=method,shape=method,color=method))+
    geom_point() +
    scale_shape_manual(values=seq(0,15))

通过这种方式,您将没有警告,并且您将在图表上获得相应的符号

<强>更新

Luchonacho指出,有许多新形状可供使用。请记住,如果您想使用循环设置它们,请不要使用aes(),因为它会暂时保留内存中的最后一个绘图参考(即只有最后一个循环输入)并仅绘制一个。

enter image description here

答案 1 :(得分:2)

正如其他答案所指出,您需要使用scale_shape_manual

重复所需的符号,您只需使用rep(x, times)即可。例如,如果要重复填写的符号14到18(请参阅luchonacho答案以获取符号列表),您可以使用以下内容:

ggplot(data, aes(x,y, colour = z)) + geom_point()
    scale_shape_manual(values = rep(15:18, 5))

这将重复符号15到18五次,因此对于z的20个不同值就足够了。

答案 2 :(得分:1)

现有答案中的形状已过时。这些是目前的: enter image description here

正如你所看到的,它们都被数字所呼唤。如果您使用符号(如在另一个答案中),则会发生错误。

如果您的数量不超过6个,那么手动选择它们很容易。例如,如果您有10行,则可以选择一种:

ggplot(mydata, aes(x,y, colour = z)) + 
    geom_line() + scale_shape_manual(values = c(4,8,15,16,17,18,21,22,3,42)) 

答案 3 :(得分:0)

当因素多于6个时,将很难在最终图中进行区分。我使用颜色和形状的组合来获得针对15个因素的预期效果,将这些因素分成3种颜色和5个符号,并在geom_行之后添加以下代码

 +scale_color_manual(values=c(rep("#00BFCC",5), rep("#E7AA00",5), rep( "#FC4E07", 5)))  
+scale_shape_manual(values=rep(0:4, 3))

还请注意,可以使用不同的颜色和形状来更改值。

希望这会有所帮助。