【问题标题】:Adding another label to third variable in barplot (ggplot2)在条形图中向第三个变量添加另一个标签(ggplot2)
【发布时间】:2021-07-20 12:02:03
【问题描述】:

我的目标是创建一个可视化三个变量百分比的条形图;但是,我当前的图表以一种相当混乱的方式这样做。 一点上下文:我的每个变量都可以有两个可能的值之一:

  • 参考null明显
  • 品种SINGGB
  • 注册S1AS1B

总的来说,数据框看起来像这样(还有几千行):

     Reference Register Variety
1      null      S1A    SING
2      null      S1A    SING
3      null      S1A    SING
4      null      S1A    SING
5      null      S1A    SING
6      null      S1A    SING

我使用以下代码创建了下面的条形图:

data_raw <- read.csv("INPUT.csv", TRUE, ",")

data_2 <- data_raw %>%
  count(Reference, Variety, Register) %>%
  mutate(pct = n / sum(n),
         pct_label = scales::percent(pct))

ggplot(data_2, aes(x= Reference, fill = Variety, y = pct)) +
  geom_col() +
  geom_text(aes(label = paste(pct_label, n, sep = "\n")), 
            lineheight = 0.8,
            position = position_stack(vjust = 0.5)) +
  scale_y_continuous(labels = scales::percent)

第三个变量,Register,在一个单色框中用两个单独的值表示,例如 GB 品种的 684/20.22% (S1B) 和 931/27.52% (S1A) .虽然我可以从我的数据中推断出这两个值中的哪一个代表 S1A 或 S1B,但我也需要从条形图中看出这一点。例如,是否可以在“684/20.22%”中添加一个标签,表明它是 S1B 值?

另一个明显的问题是 x 值“null”的数据包含非常低的百分比,使其难以阅读。我不确定处理这个问题的最佳方法是什么。也许完全取消数字并仅依赖颜色是有意义的。

对于我的问题的任何建议或解决方案,我将不胜感激。我还是个初学者,希望能更好地使用 R 进行数据分析。

【问题讨论】:

    标签: r ggplot2 label bar-chart


    【解决方案1】:

    如果您只想将Register 添加到标签中,我认为只需将其添加到标签中即可:

    ...
    geom_text(aes(label = paste(Register, pct_label, n, sep = "\n")), 
    ...
    

    但是我认为您可能想要寻找一些更美观的想法,例如 adding stripes 或将 semi-transparent 设置为 Register 变量。

    要抖动拥挤标签,可以看this post

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      相关资源
      最近更新 更多