我有9个图,每个图中有3个时间序列,其中一个图只包含一条曲线,它是我想放在包含其他8个图的两行之间的参考图。有一个简单的方法吗?
我使用facet_wrap(~density,nrow=2)
但我得到一行5和另一行4图。我相信其他人有这个问题,是否有一个简单的方法来组织这个参考图的位置,或者我是否必须创建两个单独的图并覆盖它们?否则我可能不得不在所有其他图中移动此参考图,但它似乎是多余的信息。
答案 0 :(得分:1)
您正在寻找的图形可以使用gridArrange生成
gridExtra包。这是
使用来自的storms
数据集的示例
dplyr
library(ggplot2)
library(gridExtra)
library(dplyr)
data(storms, package = 'dplyr')
str(storms)
## Classes 'tbl_df', 'tbl' and 'data.frame': 10010 obs. of 13 variables:
## $ name : chr "Amy" "Amy" "Amy" "Amy" ...
## $ year : num 1975 1975 1975 1975 1975 ...
## $ month : num 6 6 6 6 6 6 6 6 6 6 ...
## $ day : int 27 27 27 27 28 28 28 28 29 29 ...
## $ hour : num 0 6 12 18 0 6 12 18 0 6 ...
## $ lat : num 27.5 28.5 29.5 30.5 31.5 32.4 33.3 34 34.4 34 ...
## $ long : num -79 -79 -79 -79 -78.8 -78.7 -78 -77 -75.8 -74.8 ...
## $ status : chr "tropical depression" "tropical depression" "tropical depression" "tropical depression" ...
## $ category : Ord.factor w/ 7 levels "-1"<"0"<"1"<"2"<..: 1 1 1 1 1 1 1 1 2 2 ...
## $ wind : int 25 25 25 25 25 25 25 30 35 40 ...
## $ pressure : int 1013 1013 1013 1013 1012 1012 1011 1006 1004 1002 ...
## $ ts_diameter: num NA NA NA NA NA NA NA NA NA NA ...
## $ hu_diameter: num NA NA NA NA NA NA NA NA NA NA ...
让我们创建两个图形。第一张图片将只显示category == -1
风暴(这将是你问题中的对照组)。第二
图形将成为category > -1
风暴
首先,我们将为图形构建一个通用的ggplot对象。
graphic <-
ggplot() +
aes(x = long, y = lat, color = category) +
geom_point() +
facet_wrap( ~ category) +
scale_color_hue(breaks = levels(storms$category),
labels = levels(storms$category),
drop = FALSE)
接下来,我们根据需要构建两个图形。
g1 <- graphic %+% dplyr::filter(storms, category == -1) + theme(legend.position = "none")
g2 <- graphic %+% dplyr::filter(storms, category != -1)
gridExtra::grid.arrange
可以采用数字1和2的布局矩阵
表示传递给函数的第一个和第二个图形。 (这适用于
顺便说一句,不仅仅是两个图形。)重复1的值
在矩阵中我们可以控制两个图形的相对大小
图形设备。
gridExtra::grid.arrange(g1, g2,
layout_matrix =
matrix(c(1, 1, 1, 2, 2, 2, 2, 2,
1, 1, 1, 2, 2, 2, 2, 2,
1, 1, 1, 2, 2, 2, 2, 2),
byrow = TRUE, nrow = 3)
)
答案 1 :(得分:0)