正确缩放x轴用于条形图

时间:2014-04-17 16:41:29

标签: r graphics scale boxplot axes

当使用{graphics}绘制堆积条形图时,我遇到x轴未正确缩放的问题,刻度线未正确对齐到条形,使轴太短。

# dummy data
mat <- structure(c(0L, 5L, 7L, 10L, 12L, 14L, 16L, 18L, 20L, 22L, 24L, 
                26L, 28L, 30L, 32L, 34L, 36L, 38L, 40L, 42L, 44L, 46L, 48L, 50L, 
                52L, 54L, 56L, 58L, 60L, 62L, 63L, 64L, 0L, 0L, 0L, 3L, 0L, 0L, 
                1L, 0L, 0L, 0L, 5L, 0L, 1L, 4L, 0L, 9L, 0L, 0L, 1L, 0L, 8L, 0L, 
                7L, 0L, 1L, 1L, 6L, 0L, 1L, 3L, 4L, 0L, 1L, 1L, 5L, 6L, 1L, 6L, 
                0L, 0L, 5L, 4L, 1L, 8L, 0L, 1L, 1L, 3L, 1L, 3L, 1L, 0L, 1L, 1L, 
                1L, 1L, 0L, 3L, 3L, 5L, 4L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
                0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
                0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 6L, 0L, 
                11L, 0L, 7L, 0L, 6L, 0L, 0L, 5L, 4L, 0L, 1L, 0L, 1L, 0L, 0L, 
                1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 9L, 0L), .Dim = c(32L, 5L
                ), .Dimnames = list(NULL, c("Time", "Var1", "Var2", "Var3", "Var4"
                )))

# barplot
barplot(t(mat[,2:4]), beside=F, legend=levels(mat), col=c("blue",'red','forestgreen','purple'))

# manually assign x-axis
axis(1,at=c(1:32),labels=mat[,1])

对此的任何指示都将受到高度赞赏。我对ggplot2解决方案不感兴趣。谢谢!

enter image description here

1 个答案:

答案 0 :(得分:2)

对于您的轴,首先获取条形图的坐标。

bp <-barplot(t(mat[,2:5]), beside=F, 
             legend = levels(mat), col = c("blue",'red','forestgreen','purple'))

现在使用bp作为x-tick标签

axis(1,at=bp,labels=mat[,1])

结果图 enter image description here

此外,如果您使用绘图窗口/设备的宽度,您可以获得所有标签。