#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» так, чтобы оно было выровнено по левому краю в этой точке.