如何将 ggplot 注释放在我的图例上?
Posted
技术标签:
【中文标题】如何将 ggplot 注释放在我的图例上?【英文标题】:How do I put ggplot annotations onto my figure legend? 【发布时间】:2018-05-04 22:55:23 【问题描述】:我正在尝试将我的 ggplot 注释放入图形图例中。目前,我的身材是这样的:
我添加的水平线代表每个浓度的平均值。如何将此添加到图例中,以便每种颜色都有一条水平线?
这是我的代码:
ggplot(all,aes(x=Concentration, y=Distance, colour=Genotype))+
geom_jitter(width=0.3, height=0, show.legend=TRUE)+
theme(panel.background = element_rect(fill = "white")) +
theme(axis.line.x = element_line(color = "black"),
axis.line.y = element_line(color = "black"))+
scale_y_continuous(breaks=seq(0, 8, 1))+
xlab("Caffeine concentration (mM)")+
ylab("Distance travelled (arbitrary units)")+
annotate("segment", x=0.8,xend = 1.2, y= 2.86, yend = 2.86,
colour="black")+
annotate("segment", x=1.8,xend = 2.2, y= 1.86, yend = 1.86, colour="black")+
annotate("segment", x=2.8,xend = 3.2, y= 1.11, yend = 1.11, colour="black")+
annotate("segment", x=0.8,xend = 1.2, y= 2.41, yend = 2.41, colour="green3")+
annotate("segment", x=1.8,xend = 2.2, y= 2.16, yend = 2.16, colour="green3")+
annotate("segment", x=2.8,xend = 3.2, y= 2.24, yend = 2.24, colour="green3")+
scale_colour_manual(values = c("Q24" = "black", "Q35" = "green3"))
样本数据:
Concentration Distance Genotype
0 1 Q24
0 4 Q24
5 1 Q24
5 0 Q24
10 0 Q24
10 1 Q24
0 1 Q35
0 3 Q35
0 4 Q35
5 0 Q35
5 1 Q35
10 0 Q35
10 2 Q35
【问题讨论】:
【参考方案1】:你要小心在 ggplot 中过度使用注释。正如here 所提到的,它们“对于添加小注释很有用”。就您而言,您有很多数据要显示,据我所知,在这种情况下添加图例并不容易。
更简单的方法是在 ggplot 中使用 geom_segment
函数。首先让我们为您的注释行创建一个数据框:
data <- data.frame(group = c("One", "One", "Two", "Two", "Two"),
start = c(1.8, 2.8, 0.8, 1.8, 2.8),
finish = c(2.2, 3.2, 1.2, 2.2, 3.2),
y = c(1.86, 1.11, 2.41, 2.16, 2.24))
看起来像这样:
group start finish y
One 1.8 2.2 1.86
One 2.8 3.2 1.11
Two 0.8 1.2 2.41
Two 1.8 2.2 2.16
Two 2.8 3.2 2.24
只是绘制线条:
ggplot(data) +
geom_segment(aes(x = start, y = y, xend = finish, yend = y, colour = group)) +
scale_colour_manual(values = c("black", "green3"))
【讨论】:
【参考方案2】:尝试使用geo_segment()
。
all <- read.table(header = TRUE, text = "
Concentration Distance Genotype
0 1 Q24
0 4 Q24
5 1 Q24
5 0 Q24
10 0 Q24
10 1 Q24
0 1 Q35
0 3 Q35
0 4 Q35
5 0 Q35
5 1 Q35
10 0 Q35
10 2 Q35
")
seg <- data.frame(x = c(0.8, 1.8, 0.8, 1.8), y = c(2.86, 1.86, 2.41, 2.16),
xend = c(1.2, 2.2, 1.2, 2.2), yend = c(2.86, 1.86, 2.41, 2.16),
color = c("Q24", "Q24", "Q35", "Q35"))
library(ggplot2)
ggplot(all,aes(x=Concentration, y=Distance, colour=Genotype))+
geom_jitter(width=0.3, height=0, show.legend=TRUE)+
theme(panel.background = element_rect(fill = "white")) +
theme(axis.line.x = element_line(color = "black"),
axis.line.y = element_line(color = "black"))+
scale_y_continuous(breaks=seq(0, 8, 1))+
xlab("Caffeine concentration (mM)")+
ylab("Distance travelled (arbitrary units)")+
geom_segment(data = seg, aes(x = x, y = y, xend = xend, yend = yend, color = color)) +
scale_colour_manual(values = c("Q24" = "black", "Q35" = "green3"))
【讨论】:
以上是关于如何将 ggplot 注释放在我的图例上?的主要内容,如果未能解决你的问题,请参考以下文章