R графика: расположение меток оси относительно меток тиков?

#r #plot

#r #график

Вопрос:

Я хотел создать простой график R с метками по оси y, расположенными по центру над метками отметок по оси y. Я создал кое-что, что мне понравилось, с помощью приведенного ниже кода. Но для этого потребовалось немного повозиться с at графическим параметром.

Вопрос: Есть ли менее сложный способ сделать это? Есть ли способ запросить ширину меток тиков по оси y, чтобы я мог использовать эту информацию для центрирования метки по оси y над ними?

 set.seed(1)
n.obs       <- 390
vol.min     <- .20/sqrt(252 * 390)
eps         <- rnorm(n = n.obs, sd = vol.min)
windows(width = 5.05, height = 3.8)
plot(eps,  main  =  "Hello  World!", las=1, ylab="")
mtext(text="eps", side=3, at=-60)
  

мой график

Комментарии:

1. разумный вопрос. я думаю, вы можете использовать textwidth для получения ширины, но вам пришлось бы точно реконструировать, как R решил их форматировать. Вероятно, это более чисто достижимо в сеточной графике (но я не знаю как)

2. Как сказал Бен Болкер, приведенный выше график можно легко создать в grid, но интересует ли вас этот маршрут? Или вы собираетесь создавать более сложную графику, где создание такой пользовательской функции построения графика с нуля имело бы мало смысла?

3. @baptiste: Ты прав. Я хотел бы иметь возможность создавать более сложную графику

Ответ №1:

Вы можете получить масштаб пользовательских координат с помощью `par(«usr»), а затем преобразовать единицы полей. Вы добавили дополнительный изгиб, сделав область графика нестандартной. На стандартном устройстве 7 x 7 это работает:

 mtext(text="eps", side=3, at=usrcoord.x.left-0.075*diff(range(par("usr")[1:2]) ))
  

Но в вашем меньшем окне графика вам нужно использовать:

 mtext(text="eps", side=3, at=usrcoord.x.left-0.1*diff(range(par("usr")[1:2]) ))
  

Комментарии:

1. usr параметр очень полезен. Я не знал об этом и как-то упустил это из виду в справке. usrcoord.x.left Я полагаю, вы имеете в виду par("usr")[1] . После воспроизведения обнаружил, что мне понравилось mtext(text="eps", side=3, at=par("usr")[1] , которое вместо этого сосредоточено на линии оси y.