【发布时间】:2020-12-29 10:36:18
【问题描述】:
我对 R 很陌生,目前正在尝试创建一个我以前总是使用 prism 创建的百分比堆积条形图。在棱镜中,我的图表总是如下所示:
我尝试了几种方法,但我不确定我是否正确理解 geom_bar() 函数。似乎长数据格式最适合情节:
structure(list(run = c("particle_count_run1", "particle_count_run1",
"particle_count_run1", "particle_count_run1", "particle_count_run1",
"particle_count_run2", "particle_count_run2", "particle_count_run2",
"particle_count_run2", "particle_count_run2", "particle_count_run3",
"particle_count_run3", "particle_count_run3", "particle_count_run3",
"particle_count_run3", "particle_count_run1", "particle_count_run1",
"particle_count_run1", "particle_count_run1", "particle_count_run1",
"particle_count_run2", "particle_count_run2", "particle_count_run2",
"particle_count_run2", "particle_count_run2", "particle_count_run3",
"particle_count_run3", "particle_count_run3", "particle_count_run3",
"particle_count_run3", "particle_count_run1", "particle_count_run1",
"particle_count_run1", "particle_count_run1", "particle_count_run1",
"particle_count_run2", "particle_count_run2", "particle_count_run2",
"particle_count_run2", "particle_count_run2", "particle_count_run3",
"particle_count_run3", "particle_count_run3", "particle_count_run3",
"particle_count_run3"), sample = c("2K", "2K", "2K", "2K", "2K",
"2K", "2K", "2K", "2K", "2K", "2K", "2K", "2K", "2K", "2K", "10K",
"10K", "10K", "10K", "10K", "10K", "10K", "10K", "10K", "10K",
"10K", "10K", "10K", "10K", "10K", "SEC", "SEC", "SEC", "SEC",
"SEC", "SEC", "SEC", "SEC", "SEC", "SEC", "SEC", "SEC", "SEC",
"SEC", "SEC"), size_range = structure(c(5L, 4L, 3L, 2L, 1L, 5L,
4L, 3L, 2L, 1L, 5L, 4L, 3L, 2L, 1L, 5L, 4L, 3L, 2L, 1L, 5L, 4L,
3L, 2L, 1L, 5L, 4L, 3L, 2L, 1L, 5L, 4L, 3L, 2L, 1L, 5L, 4L, 3L,
2L, 1L, 5L, 4L, 3L, 2L, 1L), .Label = c("5_401:1999", "4_201:399",
"3_151:199", "2_51:149", "1_1:49"), class = "factor"), value = c(0,
0, 4462683, 296014836, 358497149, 0, 376611, 119940, 282521877,
318477067, 0, 0, 799317, 242354584, 385487693, 0, 3353818, 176929269,
964906541, 220288073, 0, 7054403, 124768386, 857429863, 207014319,
0, 14605, 117673122, 790104146, 236717487, 7772, 894924035, 62830819,
47826581, 3787399, 247825, 776011544, 56048930, 66062865, 3264425,
3487, 437890092, 30162534, 33433418, 0)), row.names = c(NA, -45L
), class = c("tbl_df", "tbl", "data.frame"))
使用我第一次尝试创建百分比堆积条形图的数据:
tmp %>% ggplot(aes(sample, value, fill = size_range)) +
geom_bar(position = "fill", stat = "identity")
这实际上导致了一个看起来与我想要实现的情节非常相似的情节:
我不确定 geom_bar() 函数是否真的正确应用了我的数据: 我有
- 3 种不同的样本:2K、10K、SEC
- 对于每个样本,我进行了 3 次测量:particle_count_run1、particle_count_run2、particle_count_run3
- 对于这些运行中的每一个,我都有在特定尺寸范围内测量的颗粒数量:值
由于我不知道如何将所有四个变量与 geom_bar 函数一起使用,我在 x 轴上使用 sample,在 y 轴上使用 value,并将 size_range 作为填充。
但是,我现在不确定 geom_bar 函数现在是否会自动考虑运行变量并计算平均值。如果不是,我不确定它需要哪个值。
我遇到的另一个问题是,当条形图堆叠时,我无法计算误差线。我只能用position = "dodge" 向他们展示:
tmp %>% ggplot(aes(sample, value,
group = size_range,
colour = size_range,
fill = size_range)) +
stat_summary(fun = mean,
geom = "bar",
position = "dodge") +
stat_summary(fun.data = mean_cl_normal,
geom = "errorbar",
position = "dodge")
每当我试图改变位置时,它就不再起作用了。
有人知道我做错了什么吗?我真的很难找到情节的解决方案,非常感谢任何可能的帮助:)
【问题讨论】:
-
欢迎来到 SO!为了帮助我们帮助您,您能否通过分享您的数据样本而不是发布图片来重现您的问题?查看how to make a minimal reproducible example 只需在控制台中输入
dput(tmp)并将以structure(....开头的输出复制并粘贴到您的帖子中。 -
当然!我已更改问题并复制到输出中。感谢 dput() 提示!
-
我会检查是否有任何 ggplot 扩展可以做到这一点exts.ggplot2.tidyverse.org/gallery
-
感谢您的链接!我浏览了它们,但我能找到的唯一一种接近的是 ggmosaic。但我也无法让它与错误栏一起工作