subvp <- viewport(width = 0.35, height = 0.35, x = 0.75, y = 0.75)
ggsurv$plot
print(ggsurv$table, vp = subvp)
由来
星球里不断有同学问到如何在一个大图中嵌入小图,这里简单介绍一下。
我们使用生存曲线及risk table作为例子,其中生存曲线是大图,risk table是小图。常见的图形为:
想要把risk table嵌入到生存曲线中。
方法一
使用grid包,借助于grid包中的viewport函数。viewport用于定义一个绘图区域,可以在一个图形设备中创建多个独立的绘图区域,每个区域都有自己的坐标系和尺寸。
viewport创建了一个子视口,它定义了一个相对主视口的区域。效果如下:
方法二
使用annotation_custom函数,它可以在图形中添加自定义的图形元素。
ggsurv$plot + annotation_custom(ggplotGrob(ggsurv$table), xmin=1900, xmax=3000, ymin=0.6, ymax=1)
ggplotGrob将ggsurv$table转换为grob对象,以便在图形中使用。效果如下:
方法三
使用ggpp包。
使用geom_plot_npc函数将子图添加到主图中,label表示要添加的子图。效果如下:
完整代码已经放在了星球里,感兴趣的同学可以自行查看。