在shape
中使用美学地图geom_point
时,如果出现的因素数超过6,我会收到以下消息:
"形状调色板最多可处理6个离散值,因为超过6个变得难以辨别;你有15.考虑手动指定形状。如果你必须拥有它们。"
我倾向于同意限制不同形状数量的原则,但是当使用形状与颜色结合时,这应该不是问题。
是否有一种优雅的方法让ggplot循环遍历形状,即设置symbol7 = symbol1等?现在它只是省略了因子水平>的点。 6。
答案 0 :(得分:10)
你可以看到你有很多形状的可能性。当您达到> 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()
,因为它会暂时保留内存中的最后一个绘图参考(即只有最后一个循环输入)并仅绘制一个。
答案 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)
正如你所看到的,它们都被数字所呼唤。如果您使用符号(如在另一个答案中),则会发生错误。
如果您的数量不超过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))
还请注意,可以使用不同的颜色和形状来更改值。
希望这会有所帮助。