【发布时间】:2019-08-04 01:11:00
【问题描述】:
我想绘制几个密度,其中图例应显示每个密度函数的参数。不幸的是,ggplot2 不包含图例(这很奇怪,在教程中它确实...)
生成数据:
x <- seq(from=-5, to=5, by=0.1)
y1 = dlaplace(x,0,0.5)
y2 = dlaplace(x,0,1)
y3 = dlaplace(x,0,2)
df = data.frame(x,y1,y2,y3)
情节
ggplot(data=df, aes(x=x))+
geom_line(data= df, aes(y=y1), color="red")+
geom_line(data= df,aes(y=y2), color="blue")+
geom_line(data= df,aes(y=y3), color="green")+
ggtitle("Gamma distribution density function") +ylab("density")+ xlab("x")+
theme(legend.position = "bottom")+
guides(fill = guide_legend(reverse=TRUE))
【问题讨论】:
-
而不是添加三个线层到你的情节你应该重塑你的数据从宽到长,添加一个
geom_line(),然后将生成的“关键”变量映射到color美学 - 这个在aes()内完成。您可以在这里找到更多信息:Plotting two variables as lines using ggplot2 on the same graph -
好的,但
ggplot的目的不是处理数据帧吗?我的意思是它应该能够处理宽,不是吗? -
重点是使用长格式的数据帧。
-
是的,重点是使用数据框,但让
ggplot2与众不同的是其名称中的“图形语法”。一般的ggplot范式是将变量映射到美学,例如映射到颜色的观察组。如果您按照教程进行操作,他们可能都是这样操作的。