Добавление текста вне ggplot - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь добавить текст вне графика (используя ggplot). Текст будет независим от сюжета.

    A <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    B <- c(10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
    C <- data.frame(A, B)

    ggplot(data = C) + geom_point(mapping = aes(x = A, y = B)) + 
labs(title = "Plot") + theme(plot.title = element_text(hjust = 0.5))

Я хочу, чтобы сюжет выглядел примерно так. Я бы хотел, чтобы вокруг переменных была нарисована рамка, если это возможно.

https://i.stack.imgur.com/p6d3V.png

1 Ответ

0 голосов
/ 20 января 2019

Вы можете добавить текст и графику с помощью grobs .Прежде всего, вам нужно немного свободного места с правой стороны.Это возможно, когда вы тратите наценку на свои темыКоманда здесь: theme(plot.margin = unit(c(1,5,1,1),"cm")), после чего вам нужно объявить, что вы хотите вставить.

График с увеличенным полем (хорошо, так как фон белый, на самом деле невозможно увидеть увеличенное поле ...но он есть):

increased margin

В вашем случае я вставил таблицу, так как это проще.Вы можете вставить текст, таблицы или фигуры с помощью grobs.Давайте сначала определим таблицу:

mytable<-cbind(c("variable_1","variable_2","variable_3"),c(0.5,1.5,3.5))

с annotion_costum() ggplot позволяет вставлять объекты в виде графики на графиках.Поскольку наша маржа достаточно высока, вы можете добавить таблицу за пределы графика.

График с добавленной таблицей:

with table

Как и в прошломшаг я нарисовал прямоугольник вокруг стола.Полный код:

library(gridExtra)
library(grid)
A <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
B <- c(10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
C <- data.frame(A, B)

mytable<-cbind(c("variable_1","variable_2","variable_3"),c(0.5,1.5,3.5))
ggplot(data = C) + geom_point(mapping = aes(x = A, y = B)) + 
  labs(title = "Plot") + theme(plot.title = element_text(hjust = 0.5))+
  theme(plot.margin = unit(c(1,5,1,1),"cm"))+
  annotation_custom(tableGrob(mytable, rows=NULL), 
                    xmin=unit(11.5,"npc"),xmax = unit(14,"npc"),  ymin=3.7, ymax=7)
  grid.rect(x=unit(0.83,"npc"),y=unit(0.5,"npc") ,width = unit(0.22,"npc"), height = unit(0.16,"npc"), gp = gpar(lwd = 3, col="black", fill = NA))

Окончательное изображение:

final plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...