ggplot2:在 facet_grid 内按组添加水平线
ggplot2: add horizontal line by group inside facet_grid
我想按组绘制带水平线的点图。
df
对象存储点,df.line
对象存储我想添加到点图中的线。横线不是点的mean/median值,是我想在这个图中展示的一些标准。
我尝试了 gome_hline
、geom_line
、geom_errorbar
和 stat_summary
。但是 none 他们的工作如我所愿。
谁能教我怎么做?
library(ggplot2)
library(tidytext)
set.seed(42)
df=data.frame(site=c(rep("a",5),rep("b",5),rep("c",5)),
sample=c(1:5,1:5,1:5),
value=c(runif(5, min=0.54, max=0.56),runif(5, min=0.52, max=0.6),runif(5,
min=0.3, max=0.4)),
condition=c(rep("c1",5),rep("c2",5),rep("c2",5)))
df.line=data.frame(site=c("a","b","c"),standard=c(0.55,0.4,0.53))
ggplot(df)+
geom_point(aes(x=tidytext::reorder_within(site,value,condition,fun=mean),
y=value))+
facet_grid(~condition,space="free_x",scales = "free_x")+
scale_x_reordered()
首先,将 df
和 df.line
合并在一起。接下来,将主要的 aes()
调用移至 ggplot
以便稍后使用。然后使用 stat_summary
:
library(dplyr)
merge(df,df.line) %>%
ggplot(aes(x=tidytext::reorder_within(site,value,condition,fun=mean),
y=value))+
geom_point()+
stat_summary(aes(y = standard, ymax = after_stat(y), ymin = after_stat(y)),
fun = mean, geom = "errorbar", color = "red", width = 0.3) +
facet_grid(~condition,space="free_x",scales = "free_x")+
scale_x_reordered()
我想按组绘制带水平线的点图。
df
对象存储点,df.line
对象存储我想添加到点图中的线。横线不是点的mean/median值,是我想在这个图中展示的一些标准。
我尝试了 gome_hline
、geom_line
、geom_errorbar
和 stat_summary
。但是 none 他们的工作如我所愿。
谁能教我怎么做?
library(ggplot2)
library(tidytext)
set.seed(42)
df=data.frame(site=c(rep("a",5),rep("b",5),rep("c",5)),
sample=c(1:5,1:5,1:5),
value=c(runif(5, min=0.54, max=0.56),runif(5, min=0.52, max=0.6),runif(5,
min=0.3, max=0.4)),
condition=c(rep("c1",5),rep("c2",5),rep("c2",5)))
df.line=data.frame(site=c("a","b","c"),standard=c(0.55,0.4,0.53))
ggplot(df)+
geom_point(aes(x=tidytext::reorder_within(site,value,condition,fun=mean),
y=value))+
facet_grid(~condition,space="free_x",scales = "free_x")+
scale_x_reordered()
首先,将 df
和 df.line
合并在一起。接下来,将主要的 aes()
调用移至 ggplot
以便稍后使用。然后使用 stat_summary
:
library(dplyr)
merge(df,df.line) %>%
ggplot(aes(x=tidytext::reorder_within(site,value,condition,fun=mean),
y=value))+
geom_point()+
stat_summary(aes(y = standard, ymax = after_stat(y), ymin = after_stat(y)),
fun = mean, geom = "errorbar", color = "red", width = 0.3) +
facet_grid(~condition,space="free_x",scales = "free_x")+
scale_x_reordered()