r - 在 ggplot 上显示计数

标签 r ggplot2 geom-bar

我想在图表上显示每年的长度总数。如何在图表上显示每年的长度总数(频率)?我不希望它显示在每个栏上方。我想要那一年的总数。

ggplot(data = OT_LF, aes(x = Length_mm, y = FREQUENCY))+
geom_bar(stat="identity", width = 10, fill = "black")+
theme_bw()+
labs(x = "Length (mm)", y = "Count")+
facet_wrap(~Year, ncol = 1, dir="v")

这是我的数据:

dput(head(OT_LF))
structure(list(ID = c(20154113L, 20154113L, 20154113L, 20154113L, 
20154113L, 20154113L), CRUCODE = c(20154L, 20154L, 20154L, 20154L, 
20154L, 20154L), Cruise = c(4L, 4L, 4L, 4L, 4L, 4L), Year = c(2015L, 
2015L, 2015L, 2015L, 2015L, 2015L), Month = c(8L, 8L, 8L, 8L, 
8L, 8L), STRATUM = c(16L, 16L, 16L, 16L, 16L, 16L), TOW = c(16L, 
16L, 16L, 16L, 16L, 16L), STA = c(113L, 113L, 113L, 113L, 113L, 
113L), YRMODA = c(20150821L, 20150821L, 20150821L, 20150821L, 
20150821L, 20150821L), MINOUT = c(20, 20, 20, 20, 20, 20), SPP = c(136L, 
136L, 136L, 136L, 136L, 136L), LENGTH = c(28L, 24L, 29L, 25L, 
23L, 26L), Length.mm. = c(280L, 240L, 290L, 250L, 230L, 260L), 
FREQUENCY = c(2L, 4L, 1L, 3L, 3L, 2L), Length_mm = c(280, 
240, 290, 250, 230, 260)), row.names = 4257:4262, class = "data.frame")

最佳答案

这是使用 ..PANNEL.. 特殊符号的方法:

ggplot(data = OT_LF, aes(x = Length_mm, y = FREQUENCY))+
  geom_bar(stat="identity", width = 10, fill = "black")+
  geom_text(aes(label = paste0("Total: ",tapply(OT_LF$FREQUENCY, OT_LF$Year, sum)[..PANEL..]),
                x = diff(range(Length_mm))/2 + min(Length_mm),
                y = max(FREQUENCY) + 1)) + 
  scale_y_continuous(expand = expansion(mult = c(0, .2))) + 
  theme_bw()+
  labs(x = "Length (mm)", y = "Count")+
  facet_wrap(~Year, ncol = 1, dir="v")

enter image description here 编辑示例数据

OT_LF <- structure(list(ID = c(20154113L, 20154113L, 20154113L, 20154113L, 
20154113L, 20154113L), CRUCODE = c(20154L, 20154L, 20154L, 20154L, 
20154L, 20154L), Cruise = c(4L, 4L, 4L, 4L, 4L, 4L), Year = c(2015L, 
2015L, 2015L, 2015L, 2018L, 2018L), Month = c(8L, 8L, 8L, 8L, 
8L, 8L), STRATUM = c(16L, 16L, 16L, 16L, 16L, 16L), TOW = c(16L, 
16L, 16L, 16L, 16L, 16L), STA = c(113L, 113L, 113L, 113L, 113L, 
113L), YRMODA = c(20150821L, 20150821L, 20150821L, 20150821L, 
20150821L, 20150821L), MINOUT = c(20, 20, 20, 20, 20, 20), SPP = c(136L, 
136L, 136L, 136L, 136L, 136L), LENGTH = c(28L, 24L, 29L, 25L, 
23L, 26L), Length.mm. = c(280L, 240L, 290L, 250L, 230L, 260L), 
FREQUENCY = c(2L, 4L, 1L, 3L, 3L, 2L), Length_mm = c(280, 
240, 290, 250, 230, 260)), row.names = 4257:4262, class = "data.frame")

关于r - 在 ggplot 上显示计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62581398/

相关文章:

r - 使用 mapply 保存时保留列表元素的名称

r - 将条形图的条形与标签上的左侧对齐

r - 如何创建由 scale_fill_manual() 使用的自定义调色板

javascript - 如何在Shiny中用JavaScript改变UI元素的属性?

r - 给定同一变量值出现的次数,如何对变量进行插补?

r - 如何从 R 中带有列联表的文件中读取维度名称

r - 当 geom_line() 和 geom_segment() 一起使用时,看似不正确的引导颜色

r - 在 ggplot 中创建条形图,其中条形的宽度与变量相关联

r - 图表中固定位置的ggplot注释

r - ggplot2 按 y 轴的比例对分类堆叠条进行排序