使用ggplot(),geom_smooth时在R中创建图例

时间:2016-09-08 18:02:53

标签: r plot ggplot2 graphing legend-properties

我在rstudio中创建了一些数据的平滑曲线图以及相应的数据点,其中包含以下代码:

#begin code
library(ggplot2)
ggplot(mydata, aes(x,y)) + geom_point() + geom_smooth()
p <- ggplot() +

# blue plot
geom_point(data=mydata, aes(x,y)) +
geom_smooth(data=mydata, aes(x,y),fill="blue",
colour ="darkblue", size=1) +

# red plot
geom_point(data=mydata, aes(x,y2)) +
geom_smooth(data=mydata, aes(x,y2), fill="darkred",
colour="red", size=1)

p + xlab('Density') + ylab("Potential Energy (MeV)") 

#endcode

数据以三列中的x,y,y2形式输入。

我可以让图表找到工作,但我无法弄清楚如何添加图例。原生legend()函数不起作用,任何使用theme()scale_colour_manual()的尝试都只会返回未更改的图形。如何添加图例或图形以区分红色和蓝色曲线?

1 个答案:

答案 0 :(得分:1)

这是我用作例子的数据。

   mydata=data.frame(x=seq(1,10),
                  y1=floor(runif(min = 1,max=10,10)),
                  y2=floor(runif(min = 1,max=10,10)))

为了让它与ggplot2一起使用,我使用了reshape2库中的函数melt。

 mydata=melt(mydata,measure.vars = c("y1","y2")) 

然后我使用了以下代码,lmk如果符合您的需要:

ggplot(mydata,aes(x,value))+
  geom_point(aes(fill=as.factor(variable)))+
  geom_smooth(aes(fill=as.factor(variable)))+
  scale_fill_manual(values=c("red","blue"),guide=guide_legend(title="Variable"))