当使用{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
解决方案不感兴趣。谢谢!
答案 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])
结果图
此外,如果您使用绘图窗口/设备的宽度,您可以获得所有标签。