在
shape
内使用美学映射 geom_point
时,当存在的因子数量超过 6 时,我会收到以下消息:
“形状调色板最多可以处理 6 个离散值,因为超过 6 个离散值就很难区分;您有 15 个。如果必须拥有它们,请考虑手动指定形状。”
我倾向于同意限制不同形状数量的原则,但是当将形状与颜色结合使用时这应该不是问题。
有没有一种优雅的方法可以让 ggplot 循环遍历形状,即设置 symbol7 = symbol1 等?现在它只是忽略因子水平 > 6 的点。
如你所见,都是用数字来称呼的。如果您使用符号(如其他答案中所示),则会发生错误。
如果您的数量不超过 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))
图像代码(来源):
d=data.frame(p=c(0:25,32:127))
ggplot() +
scale_y_continuous(name="") +
scale_x_continuous(name="") +
scale_shape_identity() +
geom_point(data=d, mapping=aes(x=p%%16, y=p%/%16, shape=p), size=5, fill="red") +
geom_text(data=d, mapping=aes(x=p%%16, y=p%/%16+0.25, label=p), size=3)
正如其他答案所指出的,您需要使用
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))
另请注意,这些值可以通过不同的颜色和形状进行更改。
希望这有帮助。