【问题标题】:How to plot a multi-histogram density (or raw count) plot from a matrix having rows which are unequal in length?如何从具有长度不等的行的矩阵中绘制多直方图密度(或原始计数)图?
【发布时间】:2017-12-04 09:56:45
【问题描述】:

我有 17 个包含计数的向量,这些向量的长度范围从 2000 到 7000。 我在互联网上搜索了如何绘制多直方图,并在某些地方读到可以通过形成矩阵来做到这一点,因此我使用 rbind 合并了向量。 我看到了包含 ggplot 的方法,例如: ggplot(df, aes(x=count,group=year,fill=as.factor(year)))

但是,我认为这些示例的长度相同,所以我想知道是否可以在同一网格上绘制多个向量,尽管它们的长度不同?以及能否任意逼近x轴(计数)和y轴(密度)?

【问题讨论】:

  • 你能提供一些示例数据吗?
  • rps_101_150: 1, 0, 0, 4, 9 rps_151_200: 3, 4, 9, 7, 8 rps_201_250: 4, 6, 14, 7, 6 rps_251_300: 16, 18, 8, 9 , 14 rps_301_350: 11, 15, 7, 9, 7 但是这些向量的长度不相等,即 6598、6540、6965、6964、6218。编辑:我在格式化我的 cmets 时很糟糕...

标签: r


【解决方案1】:

假设,较短向量的列在缺失的行中有 NA,以下将是一种方法。

p1 <- ggplot(data = data, aes(x = year1)) + geom_histogram()
p1 <- p1 + geom_histogram(aes(x = year2), col = "red", na.rm=TRUE)
...
p1

当然,请注意指定适当的 bin 宽度和 x 轴范围。承认这不是很优雅。

【讨论】:

  • 使用该示例是我的错,因为它与我的数据无关。我想了解构成 ggplot 函数的术语。我的向量被命名为 rps_101-150、rps_151-200 等直到 1000。考虑到这一点,p1 指的是什么?数据指的是什么? x 是每个单独的向量吗?
  • x 是数据框中的列名,可以是 rps_101-150,您要为其绘制直方图。 p1 是 ggplot 对象。要真正看到情节,您只需在最后输入p1
  • 嗯,我想它不会起作用,因为当我尝试从我的所有范围创建数据框时,它会指出:data.frame 中的错误:参数意味着行数不同:看来我只能使用 rbind 或 cbind 组合向量。它必须是数据框还是矩阵?
  • 必须是数据框。根据您提出的问题,您暗示您有一个数据框...您应该阅读 ggplot 中的文档。此外,您应该阅读在 stackoverflow 中提问的指南。如果我已经回答了你的问题,你应该接受它。更多问题应作为新问题发布。
  • 顺便说一句,我看不出在一个图中有 17 个直方图有什么意义!你甚至可能不是其中的一些。尝试密度图或单独的直方图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
  • 2014-04-10
  • 2018-08-07
  • 1970-01-01
相关资源
最近更新 更多