2016-06-17 2 views
3

Я хотел бы аннотировать сюжет, и я хотел бы, чтобы записка находилась за пределами участка. Я нашел this solution, и он работает для добавления заметки за пределы области графика, но я не могу понять, как изменить внешний вид ярлыка (что наиболее важно для моей цели - размер шрифта).Как изменить размер шрифта в области geom_text() вне участка?

Вот минимальный пример из вышеупомянутого решения:

library (ggplot2) 
library(grid) 

df=data.frame(y=c("dog1","dog2","dog3"),x=c(12,10,14),n=c(5,15,20)) 
p <- ggplot(df, aes(x,y)) + geom_point() 

# Add the annotation 
p <- p + geom_text(aes(label = "Hello World!", x = 0, y = 0), vjust = 2, hjust = 1) 

# Code to override clipping 
gt <- ggplot_gtable(ggplot_build(p)) 
gt$layout$clip[gt$layout$name == "panel"] <- "off" 
grid.draw(gt) 

В идеале, нота будет находиться в нижнем левом углу.

+2

Если вы используете пример в связанном вопросе (который использует 'annotation_custom' и' textGrob'), измените значение 'cex', чтобы изменить размер шрифта. Вместо 'cex' вы также можете использовать параметр' fontsize' для установки размера шрифта в точках. Например, вместо 'cex = 1.5', do' fontsize = 12' (или любого другого размера, который вы предпочитаете). Для других параметров, связанных с появлением текста, посмотрите на help для 'gpar'. – eipi10

+0

Я предпочитаю этот подход: http://stackoverflow.com/a/17493256/471093, потому что поворот отсечения может иметь нежелательные последствия – baptiste

ответ

0
library (ggplot2) 
library(grid) 

df=data.frame(y=c("dog1","dog2","dog3"),x=c(12,10,14),n=c(5,15,20)) 
p <- ggplot(df, aes(x,y)) + geom_point() 

# Add the annotation 
p <- p + geom_text(size=8, colour="red", aes(label = "Hello World!", x = 0, y = 0), vjust = 2.5, hjust = 1) 

# Code to override clipping 
gt <- ggplot_gtable(ggplot_build(p)) 
gt$layout$clip[gt$layout$name == "panel"] <- "off" 
grid.draw(gt) 
+2

Если вы не собираетесь использовать 'annotation_custom', тогда вы должны создать новый фрейм данных для' geom_text'. В противном случае «Hello World!» будет переназначаться 3 раза, один раз для каждой строки родительского кадра данных. Вот почему текст аннотации выглядит неровным. Вы можете показать, что переполнение происходит, если вы выполняете 'x = c (1,3,5)' в вызове 'geom_text', чтобы разложить три копии« Hello World! ». – eipi10

+0

@ eipi10: это тоже подшучивало. Спасибо за объяснение. – Ole

Смежные вопросы