R 如何将多条几何平滑线添加到图例(ggplot)?

R 如何将多条几何平滑线添加到图例(ggplot)?,r,ggplot2,plot,R,Ggplot2,Plot,我试图创建一个图,其中包括一个图中的多条几何平滑趋势线。我目前的代码如下: png(filename="D:/Users/...", width = 10, height = 8, units = 'in', res = 300) ggplot(Data) + geom_smooth(aes(BA,BAgp1),colour="red",fill="red") + geom_smooth(aes(BA,BAgp2),colour="turquoise",fill="turquoise

我试图创建一个图,其中包括一个图中的多条几何平滑趋势线。我目前的代码如下:

png(filename="D:/Users/...", width = 10, height = 8, units = 'in', res = 300)
ggplot(Data) + 
  geom_smooth(aes(BA,BAgp1),colour="red",fill="red") + 
  geom_smooth(aes(BA,BAgp2),colour="turquoise",fill="turquoise") + 
  geom_smooth(aes(BA,BAgp3),colour="orange",fill="orange") + 
  xlab(bquote('Tree Basal Area ('~cm^2~')')) + 
  ylab(bquote('Predicted Basal Area Growth ('~cm^2~')')) + 
  labs(title = expression(paste("Other Softwoods")), subtitle = "Tree Level Basal Area Growth") +
  theme_bw()
dev.off()
由此得出以下曲线图:


问题是,我不能在我的一生中包含一个简单的图例,我可以标记每个趋势线代表什么。数据集相当大-如果它在确定解决方案方面有价值,我将在外部发布到Stackoverflow。

您的数据是宽格式的,或者类似于矩阵。在ggplot中添加自定义图例并不容易,因此需要将当前数据转换为长格式。我模拟了3条曲线,就像你所看到的,你可以看到如果你用一个变量(“名字”在下面的例子中)来分隔你的不同值来调用geom_line或geom_smooth,它会很好地工作并生成一个图例

library(dplyr)
library(tidyr)
library(ggplot2)
X = 1:50
#simulate data
Data = data.frame(
       BA=X,
       BAgp1 = log(X)+rnorm(length(X),0,0.3),
       BAgp2 = log(X)+rnorm(length(X),0,0.3) + 0.5,
       BAgp3 = log(X)+rnorm(length(X),0,0.3) + 1)

# convert this to long format, use BA as id
Data <- Data %>% pivot_longer(-BA)
#define colors
COLS = c("red","turquoise","orange")
names(COLS) = c("BAgp1","BAgp2","BAgp3")
###
ggplot(Data) + 
  geom_smooth(aes(BA,value,colour=name,fill=name)) +
  # change name of legend here 
  scale_fill_manual(name="group",values=COLS)+
  scale_color_manual(name="group",values=COLS)
库(dplyr)
图书馆(tidyr)
图书馆(GG2)
X=1:50
#模拟数据
Data=Data.frame(
BA=X,
BAgp1=对数(X)+rnorm(长度(X),0,0.3),
BAgp2=对数(X)+r形式(长度(X),0,0.3)+0.5,
BAgp3=对数(X)+rnorm(长度(X),0,0.3)+1)
#将其转换为长格式,使用BA作为id
数据%pivot\u更长(-BA)
#定义颜色
COLS=c(“红色”、“绿松石色”、“橙色”)
名称(COLS)=c(“BAgp1”、“BAgp2”、“BAgp3”)
###
ggplot(数据)+
几何平滑(aes(BA、值、颜色=名称、填充=名称))+
#在此更改图例的名称
比例填充手册(name=“group”,value=COLS)+
缩放颜色手册(name=“group”,value=COLS)

您的数据是宽格式的,或者类似于矩阵。在ggplot中添加自定义图例并不容易,因此需要将当前数据转换为长格式。我模拟了3条曲线,就像你所看到的,你可以看到如果你用一个变量(“名字”在下面的例子中)来分隔你的不同值来调用geom_line或geom_smooth,它会很好地工作并生成一个图例

library(dplyr)
library(tidyr)
library(ggplot2)
X = 1:50
#simulate data
Data = data.frame(
       BA=X,
       BAgp1 = log(X)+rnorm(length(X),0,0.3),
       BAgp2 = log(X)+rnorm(length(X),0,0.3) + 0.5,
       BAgp3 = log(X)+rnorm(length(X),0,0.3) + 1)

# convert this to long format, use BA as id
Data <- Data %>% pivot_longer(-BA)
#define colors
COLS = c("red","turquoise","orange")
names(COLS) = c("BAgp1","BAgp2","BAgp3")
###
ggplot(Data) + 
  geom_smooth(aes(BA,value,colour=name,fill=name)) +
  # change name of legend here 
  scale_fill_manual(name="group",values=COLS)+
  scale_color_manual(name="group",values=COLS)
库(dplyr)
图书馆(tidyr)
图书馆(GG2)
X=1:50
#模拟数据
Data=Data.frame(
BA=X,
BAgp1=对数(X)+rnorm(长度(X),0,0.3),
BAgp2=对数(X)+r形式(长度(X),0,0.3)+0.5,
BAgp3=对数(X)+rnorm(长度(X),0,0.3)+1)
#将其转换为长格式,使用BA作为id
数据%pivot\u更长(-BA)
#定义颜色
COLS=c(“红色”、“绿松石色”、“橙色”)
名称(COLS)=c(“BAgp1”、“BAgp2”、“BAgp3”)
###
ggplot(数据)+
几何平滑(aes(BA、值、颜色=名称、填充=名称))+
#在此更改图例的名称
比例填充手册(name=“group”,value=COLS)+
缩放颜色手册(name=“group”,value=COLS)

如果您使用一个调用
geom_smooth
并将颜色和填充定义为一种美学,那么这将变得容易得多。这样,您只需通过
scale\u fill\u*
scale\u color\u*
映射颜色/填充,即可自动创建图例。另外,请张贴一个可复制的例子(包括例子数据),这样可以适当地帮助你。请参见此处:如果您使用一个调用
geom_smooth
并将颜色和填充定义为一种美学,那么这将更加容易。这样,您只需通过
scale\u fill\u*
scale\u color\u*
映射颜色/填充,即可自动创建图例。另外,请张贴一个可复制的例子(包括例子数据),这样可以适当地帮助你。请看这里: