1

我是 R 新手,我正在尝试为大量数据绘制累积频率直方图(非均匀箱)(数百万个最小值为“1”的正数,最大值因数据而异,例如实例 1*10^6 或 1*10^5)。我使用这个简单的代码来生成包含数据的直方图。

例如:-样本数据

[89601]     10      2      2      4      3     12      3     25     25      2
[89611]      5      5      5      2     23     22     14      8     13     10
[89621]     13     19    157      2      3      2      4      2      3     33
[89631]     22      2     14      9      2      3      3      3      8      2
[89641]      8      3      2    127      8      2     18      2      4      2
[89651]      2     13      3     34      8      2      6     10      3      7
[89661]      3      9      7      3     36      9      5      2     10     15
[89671]      7      2     23      2      2      2      2      7      6     25
[89681]      3      3      2      6     37     49     28     11      3     35
[89691]      2      2      8      3      3      2      2      4      3     12
[89701]      3      5      2      7      3      2     15      6      3     14
[89711]     13      5      3      2      2      8     34      4      4     65
[89721]      5      9     12      2     11      2      2     79      9     13
[89731]      2     66      2      9     10     22     11      2      6      3
[89741]     12      2     11      5      4      4      2      4      3      4
[89751]      2      8      9      3      2      2     84      7     11     10
[89761]      8     30     16      3     63      2      2     24     13      2
[89771]     11     37      2      9     21     21     10      2      2     49
[89781]      3      3      8      5      2     19      9      6      5      4
[89791]      4      2      9      2     10     33      5      4      2      2
[89801]      4      2      2      4      9      3     11      2      5    142
[89811]     17      2     11      4      2      8     26      2      9      8
[89821]     10      2      4      2      5      2     20      7    145     11
[89831]     22     19      8     14     18     39      3      2      3      3
[89841]      2     11     10      3      2      3      3      5      6     12
[89851]     17      5      3      8      2      2      2      2      2      5
[89861]      4      2     13      3      2      2      2      2      3      2
[89871]      4      3     21      2      6      2      8      9      7     14
[89881]      2    582      3     15     11      3     20     16      9      8
[89891]      6      2      6      7      3     20     17      2      9      5
[89901]      5     11      2     12      7      2     46      2    144      9
[89911]      2      3     36     25      3      2     16      2      2    119
[89921]      5      5     10      6      2      2      6     84     13      2
[89931]      2      6      6      2     17      3      7      4    102     48

data <- read.table("sample.txt", header=FALSE)
data <- hist(data$V1, breaks=length(data$V1), xlim=c(0,4000000))
plot(data)

当我这样做时,我可以得到一个直方图,其中包含 x 轴上的所有数据(正数)并在 y 轴上计数。然后我再次将 x 的限制更改为感兴趣的区域

plot(data, xlim=c(0,200000))

就像在绘制直方图之前一样,但是使用“绘图”我无法定义箱的数量,因此直方图不清晰(不像我想要的条形图)并且信息丰富。

由于我是这个论坛的新手,我不知道如何上传图片,所以我无法提供直方图。

任何建议都会非常有帮助。

4

1 回答 1

0

要绘制直方图,您可以这样使用 hist() 函数:

    hist(data$V1, xlim=c(0,200000), breaks=100)

Breaks 参数显示,将绘制多少条柱。但是这个数字与所有情节有关,与您指定的 xlim 无关。因此,首先它会制作一个具有给定中断次数的直方图,然后它会剪切您需要的绘图部分。

但是还有另一种绘制条形图的方法:

    data <- read.table("sample.txt", header=FALSE)
    data.hist <- hist(data$V1, breaks=length(data$V1), xlim=c(0,4000000))
    plot(data.hist$counts, type='h')

hist 函数返回一个表示直方图参数的对象。我假设,您对“计数”字段感兴趣。您可以通过定义 type='h' 以类似直方图的方式绘制此信息。

于 2013-11-08T11:48:42.233 回答