【问题标题】:Histogram in R when x axis is very long and distribution is right-skewed当 x 轴很长且分布向右倾斜时,R 中的直方图
【发布时间】:2014-08-19 13:38:07
【问题描述】:

我正在尝试使用 R 绘制 Historam

数据是这样的:

我的数据

假设我把它分成了 3 个桶:

1-3 4-6 7-20000

因此,情节应该是这样的:

-     
-     
-     
-     
-     
-     -
-     -     - 
1-3   3-6   6-20000   

所以我做了这样的事情:

hist(myData, breaks=c(1,3,6,20000), right=TRUE)

但是结果中的 x 轴太长了,不可能使直方图可读。

是否可以在此示例中使 x 比例非线性只是为了显示有 3 个桶而不是 1-20000 长 x 轴比例?

非常感谢您的帮助

【问题讨论】:

  • 问题不在于 x 轴很长,而是您的数据非常右偏,即它有一条向右延伸的长尾。

标签: r statistics histogram distribution


【解决方案1】:

您可以使用cut,而不是试图直接操纵hist

myData <- c(1,1,1,1,1,1,1,5,5,15000)

data <- data.frame(myData)

data <- transform(data, groupdata = cut(myData,
                                        breaks=c(1,3,6,20000),
                                        right=TRUE,include.lowest = TRUE))
library(ggplot2)
qplot(x = groupdata, data = data, stat = "bin")

【讨论】:

  • 哦,太好了,但我有 2 个问题:我可以为 x 值添加标签吗?例如: 6 ?第二个问题:我可以得到每个类对象的数量吗?所以在这种情况下,它将是:7、2、1。并且热更改计数标签 w y 轴?
  • 哦,y轴是参数:ylab :D
  • 哦我知道添加标签可以通过cut中的labels参数来完成,所以剩下的唯一事情就是热确定每个类中的ob对象数量
  • 你所要做的就是barplot(table(data$groupdata)),当问题在base R中时,你为什么要将解决方案更改为ggplot?
  • 你说的很对,@rawr,这也可以——而且看起来@gruber 无论如何都更适合base。我承认——我一直在想ggplot 这么久我已经忘记了一些基础知识:P
【解决方案2】:
yourData <- c(1,1,1,1,1,1,1,5,5,15000)

改编自here:

h = hist(yourData,breaks = c(1,3,6,20000))
plot(h$counts,log="x",type='h',lwd=3,lend=2)

【讨论】:

  • h$count 是 3 个元素的向量。它存储每个 bin 的计数。
猜你喜欢
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多