为了清楚起见,将图例添加到 ggplot
Posted
技术标签:
【中文标题】为了清楚起见,将图例添加到 ggplot【英文标题】:Adding legend to ggplot for clearity 【发布时间】:2021-12-28 14:40:18 【问题描述】:所以我需要为此添加一个图例。我觉得我在 aes() 函数上做错了,但我可能是错的。这是我的代码:
library(readxl)
library(ggplot2)
library(ggpmisc)
Mydata <- read_excel('../...') #Data file
df <- subset(data.frame(x1 = Mydata$rc, y1 = Mydata$`O2 (mol/m^3)`), y1 > 0.051 & x1 > 0) #Points that do count
df2 <- subset(data.frame(x2 = Mydata$rc, y2 = Mydata$`O2 (mol/m^3)`), y2 < 0.051 & y2 > 0) #Point not taken into account
cols = c('Included in regression' = 'blue', 'Excluded from regression' = 'blue')
fills = c('Included in regression' = 'blue', 'Excluded from regression' = 'white')
ggplot()+
geom_point(data = df, aes(x1,y1), color = 'blue')+
geom_point(data = df2, aes(x2,y2), color = 'blue', pch = 1)+
geom_path(data = df, aes(x1,y1), color = 'blue')+
geom_smooth(data = df, aes(x1,y1), formula = y~x, method = 'lm', se = FALSE, color = 'red')+
stat_poly_eq(data = df, formula = y~x, rr.digits = 3, coef.digits = 5,
aes(x1,y1, label = paste("atop(", after_stat(eq.label), ",", after_stat(rr.label), ")", sep = "")),
parse = TRUE, label.x = 'right')+
xlab(expression('dC'[O2]*'/dt (mol m'^-3*' s'^-1*')'))+
ylab(expression('C'['O2']*' (mol m'^-3*')'))+
coord_cartesian(xlim = c(0, 0.00205),ylim = c(0,0.27),expand = c(0,0))+
theme_bw() +
theme(panel.border = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))
【问题讨论】:
【参考方案1】:将您的color = '<color>'
语句放入aes()
。例如,
geom_point(data = df, aes(x1,y1,color = 'blue'))
您可能想要管理图例中的标签。在这种情况下,您可以使用
geom_point(data = df, aes(x1,y1,color = 'mylabel')) +
scale_color_manual(values=c('mylabel'='blue'))
图例标签将为"mylabel"
。
【讨论】:
感谢您的反应!我试过这个,但是颜色从我的观点中消失了。我需要明确表示我希望两个点的颜色相同,即蓝色。但是,第一组中的一个应该用相同的蓝色填充,而另一个应该是白色/透明的。 你能修改你的代码以包含一个可重现的例子吗?我不能“Mydata以上是关于为了清楚起见,将图例添加到 ggplot的主要内容,如果未能解决你的问题,请参考以下文章