R 向镶嵌面图形添加中间线

R 向镶嵌面图形添加中间线,r,ggplot2,facet-wrap,R,Ggplot2,Facet Wrap,我正在绘制一个图,在图中,我比较了多个站点(面)上两组(x变量)的值(y变量)。使用ggplot,我能够根据刻面变量(在本例中为站点)刻面绘图并显示我的数据,但无法确定如何向每个组添加一条线段,以指示该组的中值 可复制示例: library(tidyverse) df <- diamonds %>% filter(color == "D" | color == "E") %>% filter(carat > 1) p &

我正在绘制一个图,在图中,我比较了多个站点(面)上两组(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
库(tidyverse)
df%
过滤器(颜色==“D”|颜色==“E”)%>%
过滤器(克拉>1)

p您可以执行以下操作:创建一个单独的数据框,按组进行汇总,并计算每个组内的中位数。之后,您可以使用指定的
yintercept
geom_hline()
添加到绘图中:

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)
库(tidyverse)
df%
过滤器(颜色==“D”|颜色==“E”)%>%
过滤器(克拉>1)
df_中位数%group_by(切割)%>%
汇总(中位数=中位数(克拉))

p您可以执行以下操作:创建一个单独的数据框,按组进行汇总,并计算每个组内的中位数。之后,您可以使用指定的
yintercept
geom_hline()
添加到绘图中:

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)
库(tidyverse)
df%
过滤器(颜色==“D”|颜色==“E”)%>%
过滤器(克拉>1)
df_中位数%group_by(切割)%>%
汇总(中位数=中位数(克拉))
p可能是这样的:

p + stat_summary(fun = "median", fun.min = "median", fun.max= "median", size= 0.3, geom = "crossbar")
看这里

可能是这样的:

p + stat_summary(fun = "median", fun.min = "median", fun.max= "median", size= 0.3, geom = "crossbar")
看这里


这是否回答了您的问题?不幸的是,没有。我正在为每个切割处的每种颜色寻找一个中值,如本例所示,该中值仅显示整个切割的单个中值。您能否使用答案中的信息来找出您自己问题的答案?这是否回答了您的问题?不幸的是,没有。我正在为每个切割处的每种颜色寻找一个中值,如本例所示,该中值仅显示整个切割的单个中值。您能否使用答案中的信息来找出您自己问题的答案?在本例中,我希望在每个切割处为每种颜色绘制一条中间线,而不是在具有相同切割的两种颜色之间绘制一条中间线。在本例中,我希望在每个切割处为每种颜色绘制一条中间线,而不是在具有相同切割的两种颜色之间绘制一条中间线。