ggplot2:不同美学元素的图例

6
我首先为一组模拟数据绘制直方图,并使用一种颜色填充条形。然后,我添加了从中模拟出数据的密度函数的线条,并使用不同的颜色画线。现在,我想使用图例来显示一种颜色(直方图的填充颜色)是样本,而另一种颜色(线条的颜色)是理论密度。我该如何实现这个目标?
代码如下:
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
2个回答

7

为了创建填充和颜色图例,您可以向每个数据框添加一列来设置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="")

enter image description here


6

您可以在不改变数据的情况下,指定字面值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")

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接