r - 如何将空图添加到多图?
问题描述
假设您要创建一个如下图所示的图形。
我想使用基于ggplot2
. 如何添加空图以使用多图获得三角形输出?
MWE如下:
library(ggplot2)
# Multiplot function from http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/
multiplot <- function(..., plotlist=NULL, file, cols=1, layout=NULL) {
library(grid)
# Make a list from the ... arguments and plotlist
plots <- c(list(...), plotlist)
numPlots = length(plots)
# If layout is NULL, then use 'cols' to determine layout
if (is.null(layout)) {
# Make the panel
# ncol: Number of columns of plots
# nrow: Number of rows needed, calculated from # of cols
layout <- matrix(seq(1, cols * ceiling(numPlots/cols)),
ncol = cols, nrow = ceiling(numPlots/cols))
}
if (numPlots==1) {
print(plots[[1]])
} else {
# Set up the page
grid.newpage()
pushViewport(viewport(layout = grid.layout(nrow(layout), ncol(layout))))
# Make each plot, in the correct location
for (i in 1:numPlots) {
# Get the i,j matrix positions of the regions that contain this subplot
matchidx <- as.data.frame(which(layout == i, arr.ind = TRUE))
print(plots[[i]], vp = viewport(layout.pos.row = matchidx$row,
layout.pos.col = matchidx$col))
}
}
}
# Example plot
p <- ggplot(data = mtcars, aes(x=wt, y=mpg)) + geom_point()
multiplot(p,p,p,p,p,p,p,p,p,cols=3)
这产生
解决方案
或者, grid.arrange() 可以使用布局,
m = matrix(NA, 3, 3)
m[upper.tri(m, TRUE)] = 1:6
lp = replicate(6, ggplot(), FALSE)
gridExtra::grid.arrange(grobs = lp, layout_matrix = m)
推荐阅读
- c - C中的数字和字母验证
- mongodb - 如何在 AWS DocumentDB 中为组替换 $$ROOT - 不支持的功能:$$ROOT
- accessibility - 用于可访问性测试的 Cypress-axe 插件中的误报
- android - 我们如何为 android 应用程序包含本机库符号?
- artifactory - JFrog Artifactory 初始化失败,出现错误 500
- mysql - MySQL 8.0 复制“未知数据库”错误导致复制停止
- c# - 在模拟器中调用具有较大 json 错误的 http
- reactjs - Django 和 React - 添加多个数据字段的模型 - Material UI
- android - 如何解决android片段中的错误findViewById错误
- haskell - 是否有适合集合成员资格的光学器件?