繁体   English   中英

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

[英]Cycling through point shapes when more than 6 factor levels

geom_point使用美学映射shape时,当存在的因子数量超过 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()因为它会暂时将最后一个绘图参考(即仅最后一个循环输入)保留在内存中,并且只绘制该参考。

在此处输入图片说明

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

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

如果您没有超过 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)) 

正如其他答案所指出的,您需要使用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 个不同值就足够了。

当您有 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))

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

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM