Метки осей позиционирования

Как я могу переместить метку оси Y слева направо от области графика и метку оси X снизу вверх области графика на следующем графике? Спасибо

xleft<-c(1,2,2.5)
xright<-c(2,2.5,2.75)
ybottom<-c(1,2,2.5)
ytop<-c(2,2.5,2.75)

par(mar = c(15,15,2.75,2.75) + 0.1)
plot(c(1,3),c(1,3),type="n",main="title",xlab="xlab-move me above plot",ylab="ylab-move me      right of plot",axes=F,asp=1)
axis(1,pos=1)
axis(2,pos=1)


rect(xleft,ybottom,xright,ytop,col=c("blue","red","green"))

#Label position along  axes
x.label.position<-(xleft+xright)/2
y.label.position<-(ybottom+ytop)/2

#Labels
x.label<-c("Long species Name1","Long species Name2","Long species Name3")
y.label<-c("Long species Name4","Long species Name5","Long species Name5")

text(par()$usr[1]-0.5,y.label.position,y.label,xpd=TRUE,adj=1)
text(y=par()$usr[3]-0.5,x=x.label.position,x.label,xpd=TRUE,adj=1,srt=90)

par(xpd=TRUE)
legend(-0.1,0,legend=c("Species A","Species B","Species C"),fill=c("blue", "red", "green"))

введите здесь описание изображения


person Elizabeth    schedule 06.09.2012    source источник
comment
Кстати, именно эта проблема и является причиной моего комментария к вашему предыдущему вопросу.   -  person plannapus    schedule 06.09.2012
comment
Я до сих пор не понимаю, что ты имеешь в виду, планнапус. Как изменение осей, но не области построения, вызывает проблемы с метками x и y?   -  person Elizabeth    schedule 06.09.2012
comment
Вы только что переместили ось, а не предел вашего графика: ваши метки находятся на заданном расстоянии от пределов вашего графика, а не от осей (введите box() после вашего вызова axis, чтобы появились пределы графика, и вы будете посмотрите, что я имею в виду). Однако это не большая проблема, поскольку решение Backlin, тем не менее, заставляет его работать.   -  person plannapus    schedule 06.09.2012
comment
Ах, я понимаю, что вы имеете в виду, нет. Спасибо за урок :)   -  person Elizabeth    schedule 06.09.2012


Ответы (1)


Построение осей на правой и верхней сторонах графика

По умолчанию R будет отображать ось x ниже области графика и ось y слева от нее. Вы можете изменить это поведение следующим образом:

plot(1:100, cumsum(rnorm(100)), type="l", axes=FALSE) # Do not plot any axes
axis(3)   # Draw the x-axis above the plot area
axis(4)   # Draw the y-axis to the right of the plot area
box()

введите здесь описание изображения

Чтобы также переместить метки, установите ann=FALSE или xlab="", ylab="", а затем добавьте их с помощью mtext, где side=1 — внизу, 2 — слева, 3 — вверху, 4 — справа. line управляет расстоянием от области графика.

plot(1:100, cumsum(rnorm(100)), type="l", axes=FALSE, ann=FALSE)
axis(3)
box()
mtext("Top axis", side=3, line=3)

введите здесь описание изображения

Изменение расстояния между метками, делениями и областью графика.

Используйте параметр mgp для управления этими деталями либо перед вызовом plot, например

par(mgp=c(axis.title.position, axis.label.position, axis.line.position))

или в самой команде plot вот так

plot(1:100, cumsum(rnorm(100)), type="l", mgp=c(2,1,.5), las=1)

введите здесь описание изображения

Также обратите внимание на параметр las, который переводит все галочки в горизонтальное положение, что облегчает их чтение.

person Backlin    schedule 06.09.2012
comment
Таккар таккар! Это отлично сработало, хотя мне пришлось использовать line=-1, чтобы заставить его перейти на другую сторону. Можно ли аналогичным образом «перевернуть» отметки оси и связанную с ними нумерацию? Я могу опубликовать новый вопрос, если вы считаете, что это другой вопрос. Еще раз спасибо - person Elizabeth; 06.09.2012
comment
Параметр las управляет поворотом галочек, mtext и другими вещами, связанными с текстом. Используйте plot(..., las=1), чтобы сделать все галочки горизонтальными. Это действительно очень хорошая идея, она делает график намного легче для чтения. - person Backlin; 06.09.2012
comment
хм... извините, я думаю, что мой вопрос, возможно, был неясен. Я хочу переместить галочку и номер выше и справа от области графика. Команда las предназначена только для поворота текста относительно оси. Я хочу переместить оси на противоположную сторону графика. - person Elizabeth; 06.09.2012
comment
О, об этом я понятия не имею. Никогда не видел такого R-графика. - person Backlin; 06.09.2012