【问题标题】:Changing shapes used for scale_shape() in ggplot2更改用于 ggplot2 中 scale_shape() 的形状
【发布时间】:2010-12-01 12:02:01
【问题描述】:

假设我有以下内容

y <- rnorm(10)
b <- as.factor(sample(1:4,10,replace=T))
qplot(1:10, y, shape=b)

如何更改使用 ggplot2 的形状?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    ggplot 方法是使用 scale_shape_manual 并在 values 参数中提供所需的形状:

    qplot(1:10, y, shape=b) + scale_shape_manual(values = c(0, 5, 6, 15))
    

    形状与通常的 0-25 索引相同:http://yusung.blogspot.com/2008/11/plot-symbols-in-r.html

    【讨论】:

    • 这是一种更好的方法,因为它保留了图例并适用于 ggplot,而不是基本图形。我每天都在这里了解更多关于 ggplot 的信息,谢谢!
    • 您好,当您使用 scale_shape_manual() 时,如何更改符号的大小?我尝试使用 geom_point(size=4),但输出是双符号(两种尺寸)。任何帮助将不胜感激。
    • 如果您使用的是 qplot,size=4 需要进入 qplot 调用内部,而不是单独调用。如果您添加一个额外的geom_point,您实际上是在创建第二层。 (顺便说一句,这就是为什么你不应该使用qplot——这很令人困惑。)
    • 不要忘记,如果你想在某些形状内添加颜色(我认为值 19 - 25 左右),你需要设置填充美学,因为颜色美学只对应在这些情况下为边框颜色。您始终可以同时设置两者,例如ggplot(mydata, aes(color = MyVar1, fill = MyVar1)) + geom_point()
    【解决方案2】:

    为了补充 Harlan 的回答,这里是可用形状的参考 - 从左下角的 0 开始,然后向上阅读 (10y + x):

    df <- data.frame(x=c(0:129))
    ggplot(df, aes(x=x%%10, y=floor(x/10), shape=factor(x), colour=x, size=10)) +
      geom_point() +
      scale_shape_manual(values=df$x) + theme(legend.position='none') +
      scale_x_continuous(breaks=0:10) + scale_y_continuous(breaks=0:12) +
      scale_colour_hue() + scale_colour_gradientn(colours=rainbow(3))
    

    【讨论】:

      【解决方案3】:
      > y <- rnorm(10)
      > b <- as.factor(sample(1:4,10,replace=T))
      > qplot(1:10, y, shape=b)
      > qplot(1:10, y, pch=letters[1:10], cex=6)
      

      这是你的意思吗?我想你可以使用任何 R 的绘图字符...

      虽然这可能不是一种非常“ggplot”的方式,但手册页确实显示“您可以像使用 'plot' 函数一样使用它。”。 :-)

      【讨论】:

      • Error: scale_shape_discrete can deal with a maximum of 6 discrete values, but you have 10. See ?scale_manual for a possible alternative
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 1970-01-01
      相关资源
      最近更新 更多