您好我正在尝试使用以下代码创建堆叠条形图:
test <- as.matrix(read.csv(file="test4.csv",sep=",",head=TRUE))
test <- test[,2:ncol(test)]
pdf(file="test.pdf", height=4, width=6)
par(lwd = 0.3)
barplot(test, space=0.4, xaxt='n', ann=FALSE)
axis(1, cex.axis=0.25, las=2, at=1:ncol(test), space=0.4, labels=colnames(test))
dev.off()
我得到:
如您所见,x轴上的标签与图中的条形不匹配。此外,蜱虫是巨大的。 你们能帮助我美化x轴吗?非常感谢
答案 0 :(得分:3)
尝试将对barplot()
的调用的返回值存储在命名对象中,然后将其传递给at=
axis()
参数:
xLabLocs <- barplot(test, space=0.4, xaxt='n', ann=FALSE)
axis(1, cex.axis=0.25, las=2, at=xLabLocs,
space=0.4, labels=colnames(test))
这可能看起来很奇怪,但Value
帮助文件的?barplot
部分对此进行了解释:
Value: A numeric vector (or matrix, when ‘beside = TRUE’), say ‘mp’, giving the coordinates of _all_ the bar midpoints drawn, useful for adding to the graph.
你只是假设条形中心的x轴坐标为1:n,其中n是条数,这使得(很容易犯)错误。这不一定是真的,所以对barplot()
的单次调用都很好:(a)绘制条形图作为副作用; (b)返回必要的x轴坐标作为其返回值。