在 中使用美学映射时,当存在的因素数shape
超过geom_point
6 时,我收到以下消息:
“形状调色板最多可以处理 6 个离散值,因为超过 6 个变得难以区分;您有 15 个。考虑手动指定形状。如果您必须拥有它们。”
我倾向于同意限制不同形状数量的原则,但是当将形状与颜色结合使用时,这应该不是问题。
有没有一种优雅的方式让 ggplot 循环遍历形状,即设置 symbol7 = symbol1 等?现在它只是省略了因子级别> 6的点。
如您所见,形状有很多可能性。当您达到 >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()
,因为它会暂时将最后一个绘图参考(即仅最后一个循环输入)保存在内存中并仅绘制那个。
正如您需要使用的其他答案所指出的那样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 五次,因此对于 20 个不同的值就足够了z
。
当您有超过 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))
另请注意,可以使用不同的颜色和形状更改值。
希望这可以帮助。