ggplot中分组/计数/数据的直方图

Posted

技术标签:

【中文标题】ggplot中分组/计数/数据的直方图【英文标题】:histogram of grouped/count/ data in ggplot 【发布时间】:2021-11-02 06:09:37 【问题描述】:

我已经汇总了数据,每行代表几个人,例如

data <- tribble(
  ~x, ~count,
  10, 2,
  12, 5, 
  10, 1, 
  15, 12,
  15.5, 2,
  11, 7,
  19, 1,
  14, 1,
  9, 1,
  17, 1,
  13, 4) 

是否可以根据计数创建直方图或密度图

data %>% ggplot(aes(x = x, count = count)) + geom_histogram(bins = 5)

(在这种情况下计数被忽略),还是我应该取消分组数据?

【问题讨论】:

【参考方案1】:

我认为geom_colgeom_histogram 更适合此问题,尽管可以使用geom_histogram(stat = "identity")(与此答案的先前版本一样。)

library(ggplot2)
library(dplyr, warn.conflicts = FALSE)
data <- tribble(
    ~x, ~count,
    10, 2,
    12, 5, 
    10, 1, 
    15, 12,
    15.5, 2,
    11, 7,
    19, 1,
    14, 1,
    9, 1,
    17, 1,
    13, 4) 
data %>% ggplot(aes(x = x, y = count)) + geom_col()

由reprex package (v2.0.1) 于 2021-09-05 创建

【讨论】:

这对于大型数据集根本不起作用,但取消分组似乎是一种解决方案:data %&gt;% uncount(count) %&gt;% ggplot(aes(x = x)) + geom_histogram() “根本不起作用”是什么意思?一个错误,或输出不符合您的预期? 抱歉,不清楚。使用 2k 记录数据集,它不会产生任何输出(空图)。这是 50 条记录的示例。使用建议的方法会产生一些输出,但这不是我想要的。 data1 &lt;-fread("https://www.dropbox.com/s/giwwep7ij6t4er2/testdata50.csv?dl=1") 方法 1:data1 %&gt;% ggplot(aes(x = x, y = count)) + geom_col() 方法 2:data1 %&gt;% uncount(count) %&gt;% ggplot(aes(x = x)) + geom_histogram(bins=10)

以上是关于ggplot中分组/计数/数据的直方图的主要内容,如果未能解决你的问题,请参考以下文章

在 ggplot2 中使用计数数据向直方图添加密度线

ggplot2中具有分组密度线的直方图

在ggplot直方图中排序计数

R语言ggplot2可视化分组变量下的数据分布(线条色彩配置)WVPlots包的ShadowHist函数比较分组下的数据直方图ggplot2分面图facet_wrap可视化分组变量下的数据分布

在ggplot中制作多直方图,不识别分组

使用 ggplot 划分每组的直方图计数