#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.