【问题标题】:R barplot of count: Skewed data with columns with large counts and columns with zero or few countsR计数条形图:具有大量计数的列和零或很少计数的列的倾斜数据
【发布时间】:2019-11-11 22:20:39
【问题描述】:

以下代码绘制了 x 元素计数的条形图,y 轴采用对数刻度。

library(ggplot2)  
library(scales)

myData <- data.frame(
  x = c(rep(1, 22500), 
        rep(2, 6000), 
        rep(3, 8000), 
        rep(4, 5000), 
        rep(11, 86), 
        rep(16, 15), 
        rep(31, 1), 
        rep(32, 1), 
        rep(47, 1))
)

ggplot(myData, aes(x=x)) + 
  geom_bar(width = 0.5)+
  geom_text(stat='count', aes(label = ..count..), vjust = -1, size=3)+
  scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x),
                labels = trans_format("log10", math_format(10^.x)))+
  scale_x_continuous(breaks=(seq(1:47)))

下面是剧情:

我的问题是:

  1. 如何删除那些计数为零的列的 x 轴刻度线/标签?

  2. 如何更好地显示313247 列的值? (计数为 1 的人)

  3. 如何标记最高列的计数? (在这种情况下,1 列的22500

【问题讨论】:

  • 您的一些问题非常基于意见,尤其是您询问什么是“表示此数据的更好方法”的部分。一般来说,这些问题没有错,但在 Stack Overflow 上,基于意见的问题是题外话。通常也建议一次问一个问题。我建议重新表述您的问题,以专注于一个特定问题。
  • 附言。您可以在 SO 上找到您的一些子问题的答案;例如之前肯定有人问过如何向条形图添加标签。
  • 我是数据可视化的新手,我意识到我的图表非常稀疏,我不确定我的方法是否是最好的。另外,我添加了标签,因为我已经阅读了这些答案。我的问题是如何删除一些标签/或有选择地添加初始标签。
  • 我明白了;但正如我所说,基于意见的问题在这里是过时的。此外,我可以保证,坚持一次一个问题的规则将导致更多更好的(如有针对性的)响应。

标签: r ggplot2 bar-chart


【解决方案1】:

您可以选择添加边框颜色,这将有助于突出显示图表的这些部分中至少有一些东西:

library(tidyverse)

df <- 
  myData %>% 
  group_by(x) %>% 
  count()

df %>% 
  ggplot(aes(x = x, y = n)) +
  geom_col(color = "cyan4", fill = "cyan3") +
  geom_text(data = . %>% filter(x == 1), aes(label = n, y = n + 10000)) +
  scale_y_log10()

【讨论】:

  • 感谢您的解决方案。如何将 x 轴刻度/标签添加到仅具有值的列?
  • 我不知道这有多可取,但您可以将其添加到代码的末尾:` + scale_x_continuous(breaks = df %>% pull(x)) + theme( panel. grid.major.x = element_blank(), panel.grid.minor.x = element_blank(), axis.text.x = element_text(angle = 45, hjust = 1) )`
  • 谢谢,效果很好。你能告诉我为什么不建议这样做吗?我的意思是,我的 x 轴看起来很杂乱,因为有很多刻度。 (但这也可以通过设置一个特定的间隔来解决,但是47 列不会被勾选,因为它不在任何间隔步骤中)
猜你喜欢
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
相关资源
最近更新 更多