【问题标题】:ggplot2: legends for different aestheticsggplot2:不同美学的传说
【发布时间】:2014-06-01 00:38:59
【问题描述】:

我首先为一组模拟数据绘制直方图,并用一种​​颜色填充条形图。然后我添加从中模拟数据的密度函数的线,并使线具有不同的颜色。现在我想使用图例来显示一种颜色(直方图的填充颜色)用于样本,而另一种颜色(线的颜色)用于理论密度。我怎样才能做到这一点?

代码如下

require(ggplot2)
df <- data.frame(x=rnorm(10^4))
p <- ggplot(df, aes(x=x)) + geom_histogram(aes(y=..density..), fill='steelblue', colour='black', alpha=0.8, width=0.2)
x <- seq(-4, 4, 0.01)
df <- data.frame(x=x, y=dnorm(x))
p <- p + geom_line(data=df, aes(x=x, y=y), colour='red', size=1.5)
p

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    您可以通过向每个数据框添加一个新列来创建fillcolour 美学以进入图例。在每种情况下,只有一个类别,但将它们放在 aes() 中会给您想要的图例:

    require(ggplot2)
    
    df <- data.frame(x=rnorm(10^4), fill=rep("Sample", 10^4))
    p <- ggplot(df, aes(x=x)) + geom_histogram(aes(y=..density.., fill=fill), 
         colour='black', alpha=0.8, width=0.2) +
         scale_fill_manual(values="steelblue") + labs(fill="")
    
    x <- seq(-4, 4, 0.01)
    df <- data.frame(x=x, y=dnorm(x), colour=rep("Theoretical Density",length(x)))
    p <- p + geom_line(data=df, aes(x=x, y=y, colour=line), size=1.5) +
             scale_colour_manual(values="red") + labs(colour="")
    

    【讨论】:

      【解决方案2】:

      完全不更改数据,您可以指定文字 aes() 值,稍后您可以通过手动比例定义这些值。

      df <- data.frame(x=rnorm(10^4))
      p <- ggplot(df, aes(x=x)) + geom_histogram(aes(y=..density.., fill="samples"), 
          alpha=0.8, colour="black", width=0.2)
      p <- p+scale_fill_manual("",breaks="samples", values="steelblue")
      
      x <- seq(-4, 4, 0.01)
      df <- data.frame(x=x, y=dnorm(x))
      p <- p + geom_line(data=df, aes(x=x, y=y, colour="theory"), size=1.5)
      p <- p+scale_color_manual("",breaks="theory", values="red")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-11
        • 1970-01-01
        相关资源
        最近更新 更多