15

在 中使用美学映射时,当存在的因素数shape超过geom_point6 时,我收到以下消息:

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

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

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

4

4 回答 4

20

绘图符号

如您所见,形状有很多可能性。当您达到 >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(),因为它会暂时将最后一个绘图参考(即仅最后一个循环输入)保存在内存中并仅绘制那个。

在此处输入图像描述

于 2015-06-11T16:16:20.000 回答
5

现有答案中的形状已过时。这些是当前的: 在此处输入图像描述

如您所见,它们都是用数字调用的。如果您使用符号(如在其他答案中),则会发生错误。

如果您没有超过 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)) 
于 2016-12-14T17:11:30.970 回答
4

正如您需要使用的其他答案所指出的那样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

于 2018-04-25T16:29:55.003 回答
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))

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

希望这可以帮助。

于 2020-05-23T05:51:19.740 回答