R plot: как использовать mtext для получения выровненной по верхнему краю вертикальной метки с las = 1

#r #plot

#r #график

Вопрос:

Я пытаюсь получить метку на моей вертикальной оси, используя mtext , которая читается горизонтально ( las=1 ) и находится в верхней части оси.

Моя попытка использовать las=1, adj=1 . Я могу получить желаемое размещение, когда я не указываю las=1 , но как только я добавляю las=1 аргумент adj=1 , размещение исчезает. Вот картинка с кодом. Левый график показывает правильное размещение, но без las=1 . На правом графике показаны оба аргумента.

 par(mfrow=c(1,2), mar=c(2,3,2,1))

plot(1, 1, ann=F)
mtext(col="blue", "y", side=2, line=2, adj=1)
mtext(side=3, "col=blue, side=2, adj=1")

plot(1, 1, ann=F)
mtext(col="red", "y", side=2, line=2, adj=1, las=1)
mtext(side=3, "col=red, side=2, adj=1, las=1")
 

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

Я пробовал возиться с padj, но это только немного перемещает метку вверх и вниз. Кроме того, я знаю, что at аргумент может, но это кажется слишком ручным.

Ответ №1:

Хитрость заключается в том, чтобы получить доступ к высоте графика, вызвав par('usr')[4] :

 par(mar=c(2,3,2,1))
plot(1, 1, ann=F)
mtext(col="blue", "y", side=2, line=2, at=par('usr')[4], las=2)
 

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

Ответ №2:

Вот возможность использования text() . В основном мы устанавливаем позиции x и y, но мы делаем это таким образом, чтобы адаптироваться к графику при изменении диапазонов и тому подобное. Таким образом, вам не нужно слишком сильно менять код для разных графиков (только если вы измените интервал между полями)

 par(mar=c(2,3,2,1))
plot(1, 1, ann=F)
mtext(side=3, "convertX/Y")
xx<-grconvertX(grconvertX(0, "nfc","inches") , "inches","user")
yy<-grconvertY(par("din")[2]-par("cin")[2]*5/2, "inches","user")
text(xx,yy,"y", col="green", cex=1.5, xpd=NA, pos=4)
 

Для x мы идем полностью влево от области рисунка, а для y мы опускаемся чуть более чем на две строки сверху. Затем мы рисуем наше значение «y» так, чтобы оно было выровнено по левому краю в этой точке.

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