将中线添加到多面ggplots
Adding median lines to faceted ggplots
我正在绘制一个图,在其中比较多个站点(方面)的两组(x 变量)的值(y 变量)。使用 ggplot,我已经能够根据分面变量(在本例中为站点)对图进行分面并显示我的数据,但无法确定如何向每个组添加一条线段以指示该组的中值.
可重现的例子:
library(tidyverse)
df <- diamonds %>%
filter(color == "D" | color == "E") %>%
filter(carat > 1)
p <- ggplot(data=df, aes(x = color, y=carat, fill=color)) +
geom_jitter(shape = 21, col="black") +
facet_wrap(~ cut, ncol = 5)
p
输出:
我想输出的内容类似于以下内容(注意,实际上并未在中位数处绘制线条):
您可以执行以下操作:创建一个单独的数据框,在其中按组汇总并计算每个组内的中位数。之后,您可以将 geom_hline()
添加到您的绘图中,并正确指定 yintercept
美学:
library(tidyverse)
df <- diamonds %>%
filter(color == "D" | color == "E") %>%
filter(carat > 1)
df_median <- df %>% group_by(cut) %>%
summarise(median_carat = median(carat))
p <- ggplot(data=df, aes(x = color, y=carat, fill=color)) +
geom_jitter(shape = 21, col="black") +
geom_hline(data = df_median, aes(yintercept = median_carat), size = 2, color = "red")+
facet_wrap(~ cut, ncol = 5)
也许是这样:
p + stat_summary(fun = "median", fun.min = "median", fun.max= "median", size= 0.3, geom = "crossbar")
看这里
ggplot2: add line for average per group
我正在绘制一个图,在其中比较多个站点(方面)的两组(x 变量)的值(y 变量)。使用 ggplot,我已经能够根据分面变量(在本例中为站点)对图进行分面并显示我的数据,但无法确定如何向每个组添加一条线段以指示该组的中值.
可重现的例子:
library(tidyverse)
df <- diamonds %>%
filter(color == "D" | color == "E") %>%
filter(carat > 1)
p <- ggplot(data=df, aes(x = color, y=carat, fill=color)) +
geom_jitter(shape = 21, col="black") +
facet_wrap(~ cut, ncol = 5)
p
输出:
我想输出的内容类似于以下内容(注意,实际上并未在中位数处绘制线条):
您可以执行以下操作:创建一个单独的数据框,在其中按组汇总并计算每个组内的中位数。之后,您可以将 geom_hline()
添加到您的绘图中,并正确指定 yintercept
美学:
library(tidyverse)
df <- diamonds %>%
filter(color == "D" | color == "E") %>%
filter(carat > 1)
df_median <- df %>% group_by(cut) %>%
summarise(median_carat = median(carat))
p <- ggplot(data=df, aes(x = color, y=carat, fill=color)) +
geom_jitter(shape = 21, col="black") +
geom_hline(data = df_median, aes(yintercept = median_carat), size = 2, color = "red")+
facet_wrap(~ cut, ncol = 5)
也许是这样:
p + stat_summary(fun = "median", fun.min = "median", fun.max= "median", size= 0.3, geom = "crossbar")
看这里 ggplot2: add line for average per group