R 如何将统计汇总行添加到ggplot2中的坐标极坐标图?

R 如何将统计汇总行添加到ggplot2中的坐标极坐标图?,r,ggplot2,R,Ggplot2,我有花环图排列在一个小平面网格中,显示了来自2x2析因实验的直方图数据。此处生成的模拟数据: #GENERATE MOCK DATA------------------------------------------------------------------------- Treatment <- c(rep("Vehicle", 50), rep("Drug", 50)) Cell <- c(rep("A", 25), rep("B", 25), rep("A", 25),

我有花环图排列在一个小平面网格中,显示了来自2x2析因实验的直方图数据。此处生成的模拟数据:

#GENERATE MOCK DATA-------------------------------------------------------------------------
Treatment <- c(rep("Vehicle", 50), rep("Drug", 50))
Cell <- c(rep("A", 25), rep("B", 25), rep("A", 25), rep("B", 25))
Response <- c(rnorm(25, 50, 120), rnorm(25, 30, 90), rnorm(25, 50, 120), rnorm(25, 30, 90))
Data <- data.frame(Treatment, Cell, Response)
但我得到以下错误:

警告信息:

1:In is.na(x):is.na()应用于“NULL”类型的非-(列表或向量)

2:在统计摘要()中计算失败。: 参数表示不同的行数:1,0

3:In is.na(x):is.na()应用于“NULL”类型的非-(列表或向量)

4:在统计摘要()中计算失败。: 参数表示不同的行数:1,0

5:In is.na(x):is.na()应用于“NULL”类型的非-(列表或向量)

6:在统计摘要()中计算失败。: 参数表示不同的行数:1,0

7:In is.na(x):is.na()应用于“NULL”类型的非-(列表或向量)

8:在统计摘要()中计算失败。: 参数表示不同的行数:1,0


我知道可能有一个简单的解决方案,但我一直在努力理解stat_summary的语法。如果你能提供任何帮助,我将不胜感激。我甚至不介意先手动计算中位数并添加它们。

可能会有一个好的
stat\u summary
答案,但我不认为这是可能的,因为您需要访问
geom\u bar
生成的
.count..
。还要注意,
geom_line
需要多个点来绘制一条线,
median
无论如何只给出一个值

对我来说,预先计算不同的中间点,并使用
geom_vline
将它们添加到绘图中似乎更容易。这对于使用
dplyr
很方便

library(dplyr)
Data2 <- Data %>% 
  group_by(Cell, Treatment) %>% 
  summarize(v = median(Response))
库(dplyr)
数据2%
组(细胞,治疗)%>%
汇总(v=中值(响应))
制作情节:

library(ggplot2)
baseplot <- ggplot(data = Data, aes(x = Response, fill = Treatment))
baseplot + geom_bar(width = 4) + coord_polar() + facet_grid(Treatment~Cell) +
  labs(y = "Frequency", x = "") + 
  geom_vline(data = Data2, aes(xintercept = v), size = 1.5)
库(ggplot2)

我得到的基线图
错误:stat\u summary需要以下缺少的美学:y
。感谢您的评论。这很奇怪,这不是我得到的。但是,如果stat_summary()需要一个Y美学,那么当Y只是观察的频率时,我如何使用它呢?这太完美了!非常感谢你,你太棒了。因此,为了使正确的线出现在正确的面中,data2数据框必须具有与用于构建图的dataframe相同的列标题和因子级别?是的,
ggplot
将为每个geom尝试找出何处,因此面元变量需要出现在每个数据集中。否则,它们都会在每个方面绘制出来。顺便说一句,你可能想看看。
library(dplyr)
Data2 <- Data %>% 
  group_by(Cell, Treatment) %>% 
  summarize(v = median(Response))
library(ggplot2)
baseplot <- ggplot(data = Data, aes(x = Response, fill = Treatment))
baseplot + geom_bar(width = 4) + coord_polar() + facet_grid(Treatment~Cell) +
  labs(y = "Frequency", x = "") + 
  geom_vline(data = Data2, aes(xintercept = v), size = 1.5)