2013-02-18 2 views
9

Я использую отличный theme_minimal(), найденный в ggplot0.9.3, который имеет белый фон. Я хотел бы разместить заголовок моих участков в обычном месте в правом верхнем углу участка. В следующем примере я знаю значения x и y, но мне интересно, есть ли способ передать значения xmax и ymax, чтобы обеспечить размещение текста в правом верхнем углу. В идеале текст будет правильным.Позиция ggplot в правом верхнем углу участка

#example plot 
p <- qplot(mpg, wt, data = mtcars, colour = cyl) 
p + annotate("text", x = 30, y = 5, label = "Custom Title") 

#what I would like 
p + annotate("text", y= ymax, x =xmax_or_RightJustified) 
+0

Априори, я не думаю, что есть простой способ, чтобы получить текст флеш в угол. Самый безопасный подход - использовать max (x) и max (y) из данных, чтобы помочь вам его расположить. Одна из проблем заключается в том, что по умолчанию 4% -ное расширение x- и y-масштабов в качестве дополнения - что, если вы измените его внутри вызова сюжета? Вы можете получить эквивалент угловых координат, например, 'u <- ggplot_build (p)', извлекая 'u $ panel $ range [[1]] $ y.range [2]' и u $ panel $ range [[1]] $ x.range [2], но это апостериорный расчет, который я не думаю, что вы хотите. Предполагается, что это функция темы? – Dennis

ответ

11

Вы можете использовать функции max() и min()annotate() внутри, а затем добавить hjust=1, чтобы гарантировать, что текст помещается внутри участка (оправдан).

p + annotate("text", y= max(mtcars$wt), x =max(mtcars$mpg),label="Custom Title",hjust=1) 
23

Вы можете сделать

p + annotate("text", x=Inf, y = Inf, label = "Some text", vjust=1, hjust=1) 
Смежные вопросы