R中所有级别的条形图(即使没有值的条形图)

时间:2015-09-25 04:21:04

标签: r

我绘制了与我从cut获得的一系列因素相关的值:

         a   b
1  (25,30]  10
2  (30,35] 313
3  (35,40] 904
4  (40,45] 809
5  (45,50] 608
6  (50,55] 514
7  (55,60] 227
8  (60,65] 323
9  (65,70]  23
10 (70,75]   5
11 (75,80]   1

我将其绘制成:

plt_tmp = barplot(agg$b)
axis(1, agg$a, at=plt_tmp,las=2) 

这没关系,但实际上是水平(即levels(agg$a)):

[1] "(0,5]"    "(5,10]"   "(10,15]"  "(15,20]"  "(20,25]"  "(25,30]"  "(30,35]"  "(35,40]"  "(40,45]" 
[10] "(45,50]"  "(50,55]"  "(55,60]"  "(60,65]"  "(65,70]"  "(70,75]"  "(75,80]"  "(80,85]"  "(85,90]" 
[19] "(90,95]"  "(95,100]"

我希望我可以将所有这些图表(包括缺失的图表)绘制为0值。我该怎么做呢?非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

您需要merge所有levels支持您的基础数据,然后将该数据传递给barplot。有一个简化的例子:

agg <- data.frame(a=factor(c(1,2,4), levels=1:5), b=c(10,1,20))
with(merge(agg, list(a=levels(agg$a)), all=TRUE), barplot(b, names.arg=a) )

答案 1 :(得分:1)

使用包ggplot2作为条形图。使用比例选项,您可以定义是否绘制未使用的水平:

_bitlyToken