我正在尝试用两个叠加的密度图创建直方图。问题:我希望一个密度是一条虚线,它可以正常工作,但在图例中不会出现虚线,如以下示例所示

x<-sort(rnorm(1000))
data<-data.frame(x=x,Normal=dnorm(x,mean(x),sd=sd(x)),Student=dt(x,df=3))

ggplot(data,aes(y=x))+geom_histogram(aes(x=x,y=..density..),
color="black",fill="darkgrey")+geom_line(aes(x=x,y=Normal,color="Normal"),size=1,
linetype=2)+ylab("")+xlab("")+labs(title="Density estimations")+geom_line(aes(x=x,y=Student,color="Student"),size=1)+
scale_color_manual(values=c("Student"="black","Normal"="black"))

有什么想法可以让我在图例中得到虚线吗?

非常感谢你!

雷纳

最佳答案

“ggplot”方式通常将数据设置为“长”格式,并使用单独的列来指定每种美感。在这种情况下,线型应解释为美观。解决此问题的最简单方法是使用reshape2包将数据准备为适当的格式:

library(reshape2)
data.m <- melt(data, measure.vars = c("Normal", "Student"), id.vars = "x")

然后修改绘图代码,使其看起来像这样:
ggplot(data,aes(y=x)) +
  geom_histogram(aes(x=x,y=..density..),color="black",fill="darkgrey") +
  geom_line(data = data.m, aes(x = x, y = value, linetype = variable), size = 1) +
  ylab("") +
  xlab("") +
  labs(title="Density estimations")

结果是这样的:

关于r - ggplot2:图例中的虚线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13572572/

10-16 10:14