我在R中绘制直方图,前两个频率被合并到一个我不想要的bin中。数据中有七个可能的值,我想要7个箱,而不是6个。
R绘制的直方图中的信息是,
$breaks
[1] 9 10 11 12 13 14 15
$counts
[1] 27 6 5 4 1 11
$density
[1] 0.50000000 0.11111111 0.09259259 0.07407407 0.01851852 0.20370370
$mids
[1] 9.5 10.5 11.5 12.5 13.5 14.5
$xname
[1] "data$hour"
$equidist
[1] TRUE
attr(,"class")
[1] "histogram"
问题在于$ count,它们应该是:
9-20
10-7
11-6
12-5
13-4
14-1
15-11
直方图和信息生成的数据和命令是:
temp <- c(9, 9, 9, 11, 12, 14, 15, 9, 9, 9, 10, 9, 13, 13, 15, 15, 9,
9, 9, 11, 12, 13, 15, 15, 15, 9, 9, 10, 11, 12, 9, 10, 10, 12,
15, 9, 9, 9, 9, 10, 11, 15, 9, 10, 10, 11, 11, 12, 13, 15, 15,
9, 9, 15)
hist(temp)
histinfo = hist(temp)
histinfo
如何纠正?我的想法是计算出现次数并绘制一个条形图,但这似乎有点矫枉过正,因为已经内置了hist。我试过改变休息无济于事。
谢谢。
答案 0 :(得分:3)
将table
功能与barplot
> barplot(table(temp))
答案 1 :(得分:2)
绘制直方图时必须设置breaks
。
就个人而言,我会手工制表数据并绘制一个条形图。这可能是你可能会或可能不是你真正想要的。
library(reshape)
temp.melt <- melt(table(temp))
library(ggplot2)
ggplot(temp.melt, aes(x = temp, y = value)) +
theme_bw() +
geom_bar(stat = "identity")
答案 2 :(得分:2)
使用hist时,如果需要每个项目,则需要断开以支撑两端。因此,以下内容将起作用。
hist(temp, breaks = 8:15)
如果您不喜欢x轴上的8,则必须将其抑制,然后绘制x轴
hist(temp, breaks = 8:15, xaxt = 'n')
axis(1, 8:14+0.5, 9:15)
不幸的是,内置的hist
函数应该主要用于探索而不是发布,所以如果你知道你用right = TRUE
这样的参数调用了函数,那么你应该清楚它是什么第一个图的输出意味着并且易于解释(即显然没有任何东西低于8)。
答案 3 :(得分:1)
虽然已经回答了这个问题,但我发现这是最简单的,同时也会产生最佳外观默认图表:
library(ggplot2)
qplot( factor(temp) )
答案 4 :(得分:1)
我认为这是一个错误。在默认参数下,断点应该是右关闭的,保持打开状态。根据文档,对于breaks=c(9, 10, 11, 12,13,14,15)
,断点应该是
(9,10),(10,11),(11,12),(12,13),(13,14),(14,15)。这意味着9将不会被绘制。似乎hist
决定include.lowest=TRUE
(尽管除非你提供breaks
向量,否则会忽略参数),因此第一个区间实际上是[9,10]。 / p>
答案 5 :(得分:-1)
我最近遇到了同样的问题,除了使用HIST情节之外别无选择。我的数据从零开始,但是如上所述它保持组合前两组。在玩了很长一段时间后尝试手动设置休息时没有任何影响我终于能够通过以负值( - )开始休息来正常工作。 break = c(-1:9)最终为我工作。我希望这对你的问题也有帮助。
加里