我正在尝试使用特定坐标将多个图(不同大小)绘制到网格上。为此,我正在使用treemap
包创建一个树形图以获取坐标,然后使用这些坐标,我试图放置我的个人图。希望我下面的例子能更好地解释我的问题。
首先,我创建了一些条形图,然后创建了一个树形图,如下所示:
library(ggplot2)
library(treemap)
#create data
df <- data.frame(var1 = c("A", "B", "C"),
var2 = runif(3),
var3 = runif(3),
var4 = runif(3),
size = c(10, 5, 3),
labels = c(1:3))
# Basic barplot
p1 <- ggplot(data=df, aes(x=var1, y=var2)) +
geom_bar(stat="identity")
p2 <- ggplot(data=df, aes(x=var1, y=var3)) +
geom_bar(stat="identity")
p3 <- ggplot(data=df, aes(x=var1, y=var4)) +
geom_bar(stat="identity")
#create treemap
tm <- treemap(df,
index = "labels",
vSize = "size",
palette = "Set2")
如果我们看一下 treemap 对象tm
,我们可以看到它提供了如下所示的 treemap 的坐标,其中x0
、y0
、w
和h
是坐标。
> tm$tm
labels vSize vColor stdErr vColorValue level x0 y0 w h color
1 1 10 1 10 NA 1 0.0000000 0.000 0.5555556 1.000 #66C2A5
2 2 5 1 5 NA 1 0.5555556 0.375 0.4444444 0.625 #FC8D62
3 3 3 1 3 NA 1 0.5555556 0.000 0.4444444 0.375 #8DA0CB
所以,我想做的是把我的三个条形图p1
,p2
并将p3
它们放入树形图中,以便在树形图p1
的位置1
......p2
将在适当的位置2
等......
关于我如何做到这一点的任何建议?我尝试使用该patchwork
软件包,但遇到了地块重叠的问题......但我愿意接受使用任何软件包的建议(例如gridExtra
或只是ggplot
)
编辑
澄清一些事情,根据下面彼得给出的关于patchwork
包的答案,我不能手动输入坐标作为绘图布局(我最初使用area
函数patchwork
并将树形图的坐标输入到area
函数中) . 但是,正如下面评论中提到的,如果我有很多条形图,并且树形图的大小和形状发生了变化,那么我不能手动输入布局值。我正在尝试找到一种方法来自动化该过程