метки оси X не соответствуют столбцам - PullRequest
0 голосов
/ 10 января 2012

Здравствуйте. Я пытаюсь создать столбчатую диаграмму с использованием следующего кода:

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()

И я получаю: enter image description here

Как видите, метки на оси x не соответствуют полосам на графике. Кроме того, клещи огромны. Ребята, можете ли вы помочь мне украсить ось х? Большое спасибо

1 Ответ

3 голосов
/ 10 января 2012

Попробуйте сохранить возвращенное значение вызова 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 в качестве возвращаемого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...