【问题标题】:Cycling through point shapes when more than 6 factor levels超过 6 个因子水平时循环通过点形状
【发布时间】:2013-05-29 11:58:44
【问题描述】:

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

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

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

是否有一种优雅的方法可以让 ggplot 循环显示形状,即设置 symbol7 = symbol1 等?现在它只是省略了因子级别> 6的点。

【问题讨论】:

  • 有些人可能会争辩说,将形状与颜色结合起来会使问题变得更糟,而不是更好。无论如何,如警告所述,解决方案是使用scale_shape_manual 手动指定形状。
  • @joran :因为颜色太接近而无法分辨出哪条曲线属于哪个图例项,这怎么可能更糟糕?
  • 我的观点是,如果使用多种形状是不好的,因为很难区分大量的形状,那么使用多种形状结合多种颜色将更难区分。
  • @joran : 是的,但这里的想法是使用 few 形状与颜色的组合。即以不同的颜色重复相同的 6 个符号。

标签: r ggplot2


【解决方案1】:

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

【讨论】:

  • 有趣。有没有办法循环通过它们?
  • 如果我理解你的问题,你可以将上面的代码行包裹在一个简单的 for 循环中并更改 scale_shape_manual(values=seq(i,i+10)) 中的数字,例如假设 i 是你的循环变量
【解决方案2】:

现有答案中的形状已过时。这些是当前的:

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

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

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

    【讨论】:

      【解决方案4】:

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

      另请注意,这些值可以通过不同的颜色和形状进行更改。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-23
        • 2017-10-31
        • 1970-01-01
        • 2018-07-05
        • 2013-10-28
        • 1970-01-01
        • 1970-01-01
        • 2018-12-07
        相关资源
        最近更新 更多