2012-01-05 2 views
1

Как использовать plot, чтобы повернуть этот участок сбоку, чтобы полосы гистограммы были горизонтальными?R-график: как сделать гистограмму с горизонтальными линиями с использованием графика()

size<- abs(rnorm(20,10,10)) 
age<-c(seq(1, 20, by=2)) 
plot(size~age, type=("n")); lines(size~age, type=c("l"), lines(size~age, type=c("h"))) 

enter image description here

То, что я хочу, это примерно что-то вроде этого, с гистограммы горизонтальных линий:

enter image description here

, который я сделал с

plot(size~age, type=("n"), yaxt="n", xaxt="n", ylab=""); lines(size~age, type=c("l"), lines(size~age, type=c("h"))); axis(4); axis(1,las=2) 

и затем вращая вывод изображения в другое программное обеспечение ,

Я хотел бы знать, как я могу использовать функцию plot, чтобы получить выходной участок в сторону так, что я могу сделать их группы в R без необходимости поворачивать их вне R.

UPDATE Благодаря очень полезное предложение от @csgillespie я получил это, который попал мне на моем пути:

size<- abs(rnorm(20,10,10)) 
age<-c(seq(1, 40, by=2)) # sorry for the typo in the first set of example data above 
plot(-age~size, type="n",yaxt="n", ylab="Age", xlab="Size") 
lines(-age~size) 
segments(0, -age, size, -age) 
axis(2, labels=c(seq(0,max(age), by=5)), at=-c(seq(0,max(age), by=5)), las=1) # this is a more general approach to labelling the axis ticks 

и вот в результате чего участок (довольно еще нет, но я думаю, что я может делать все остальное здесь):

enter image description here

+0

Дальнейшие комментарии вы можете найти здесь: http://stackoverflow.com/questions/ 3792803/is-it-possible-to-rotate-a-plot-in-r-base-graphics – Seb

ответ

3

вы можете получить то, что вы хотите с помощью -age затем добавить масштаб вручную.

plot(-age~size, type="n",yaxt="n", xlab="", ylab="Age") 
lines(-age~size) 
segments(0, -age, size, -age) 
axis(2, labels=c(0,5,10,15,20), at=-c(0,5,10,15,20), las=1) 

Код выше производит идентичный сюжет вам пример фигуры, за исключением того, метка оси у повернута. Если вы хотите, чтобы метка у оси с возможностью поворота, а затем использовать ylab="" в команде участка и добавить его вручную с text

enter image description here

+0

Большое спасибо! Я не знал, что это просто, как изменение знака в функции. Я также не встречал «сегменты» раньше, так что это очень полезно. Я пошел с более общим подходом к маркировке меток (см. Мое обновление), что более эффективно для моих реальных данных. еще раз спасибо – Ben

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