2010-09-02 2 views

ответ

8

barplot вернет середине х позиций баров, так что вы могли бы сделать

mydata <- matrix(c(10, 21, 22, 33, 45, 23, 22, 43, 33), nrow=3) 

# b will contain the x midpoints of the bars 
b <- barplot(mydata) 

# This will write labels in the middle of the bars, horizontally and vertically 
text(b, colMeans(mydata), c("Label1", "Label2", "Label3")) 

# This will write labels in the middle of the middle block 
text(b, mydata[1,]+mydata[2,]/2, c("LabelA", "LabelB", "LabelC")) 

EDIT: перечитывая свой вопрос, я думаю, что это то, что вы хотите (или, может быть, и нет, но я буду писать в любом случае: D)

# Find the top y position of each block 
ypos <- apply(mydata, 2, cumsum) 
# Move it downwards half the size of each block 
ypos <- ypos - mydata/2 
ypos <- t(ypos) 

text(b, ypos, mydata) 
+0

Привет, Нико, ничего себе прекрасно работает с вертикальными штрихами. Большое спасибо. Я рад, что решение не было таким загадочным. Я также попытался применить ваш код к вертикальной панели Просто обмен b и ypos делает трюк. Большое спасибо! – Jens

1

Как насчет простой функции text()?

Вы можете просто добавить строку, в которой когда-либо вы хотите, например:

text (x = ..., y = ..., labels = c("foo bar 1000")) 
+0

текст также был моим первым выбором, но как я могу сказать, что R него следует поместить значения из моего набора данных в центр самого стека? – Jens

0

Может быть, вы можете использовать или Осмотреть barp функцию plotrix пакета

+0

Ничего полезного там :( – Jens

Смежные вопросы