ggplot中条形图上的分类值计数?

R. *_* B. 3 r ggplot2

这里有个R新手,请原谅我,如果这最终成为令人尴尬的简单修复。我正在寻找一种获取条形图以显示ggplot2中类别值计数的方法。

我整理了一些虚构的样本数据:

ID  Age SizeOfTumor RemovalSurgery
1   <30 Small   No
2   <30 Large   Yes
3   <30 Large   No
4   <30 Small   No
5   <30 Small   No
6   <30 Large   Yes
7   30-60   Large   No
8   30-60   Large   Yes
9   30-60   Large   Yes
10  30-60   Small   Yes
11  30-60   Small   Yes
12  30-60   Small   No
13  30-60   Large   No
14  30-60   Small   No
15  >60 Large   Yes
16  >60 Large   Yes
17  >60 Large   Yes
18  >60 Small   Yes
19  >60 Small   No
20  >60 Large   Yes
Run Code Online (Sandbox Code Playgroud)

并使用以下代码进行绘制:

library(ggplot2)

ggplot(df, aes(x = SizeOfTumor, fill = RemovalSurgery)) + geom_bar(position = "fill") + facet_grid(~Age)
Run Code Online (Sandbox Code Playgroud)

哪个出 了漂亮的标准条形图

我想做的是能够将每个分类变量的数字添加到图表中,同时保留百分比比例。

  • 我查了几个类似的问题,并尝试了几种不同的geom_text代码,但没有运气。
  • 我认为不同之处可能在于我没有y作为自己的列,而只是将其作为填充。

任何意见,将不胜感激。我宁愿不必进入photoshop并手动键入所有标签。

Jak*_*upp 5

在这种情况下,我建议您自己做总结,而ggplot不要让它为您做。

library(ggplot2)
library(scales)
library(dplyr)

plot_data <- df %>% 
  count(SizeOfTumor, Age, RemovalSurgery) %>% 
  group_by(Age, SizeOfTumor) %>% 
  mutate(percent = n/sum(n))


ggplot(plot_data, aes(x = SizeOfTumor, y = percent, fill = RemovalSurgery)) + 
  geom_col(position = "fill") + 
  geom_label(aes(label = percent(percent)), position = "fill", color = "white", vjust = 1, show.legend = FALSE) +
  scale_y_continuous(labels = percent) +
  facet_grid(~Age)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我还添加了Y_AXIS的一些格式和文本geom_labelpercentscales包。