在ggplot之外添加文本

时间:2019-01-19 22:41:24

标签: r ggplot2 text

我正在尝试在图的外部添加文本(使用ggplot)。文本都将与情节无关。

<script>
 import axios from 'axios';
 export default {
  created() {
   axios.post()
  }
 }
</script>

我希望剧情看起来像这样。如果可能的话,我希望在变量周围画一个框。

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

1 个答案:

答案 0 :(得分:2)

您可以使用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