gpt4 book ai didi

R将传统情节和ggplot2放在一起

转载 作者:行者123 更新时间:2023-12-04 10:18:24 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Combine base and ggplot graphics in R figure window

(4 个回答)


8年前关闭。




我有 2 个图表,一张用 ggplot2 绘制的 map 像这样:

w<-ggplot()+
geom_polygon(data=dep_shp.df, aes(x=long,y=lat,group=group,fill=classJenks))+

# scale_fill_gradient(limits=c(40, 100))+
labs(title ="Classification de la proportion de producteurs par départements
\n par la methode de jenks (2008)")+
theme_bw()+
coord_equal()

和一个图形作为 classIntervals 类型的对象来自 classInt图书馆。

我想把这两张图放在一起。我试过了:
vplayout <- function(x, y) viewport(layout.pos.row = x, layout.pos.col = y)
grid.newpage()
pushViewport(viewport(layout = grid.layout(1, 2)))

#creation
print(u, vp = vplayout(1, 1))
print(v, vp = vplayout(1, 2))

还有 grid.arrange
grid.arrange(plot1, plot2, ncol=2)

但这些都不起作用。

最佳答案

该方法在 Embedding base graphics plots in grid viewports 中描述。 gridBase vignette 的部分.
gridBase包包含为基础图的绘图区域设置合理参数的函数。所以我们需要这些包:

library(grid)
library(ggplot2)
library(gridBase)

这是一个示例 ggplot:
a_ggplot <- ggplot(cars, aes(speed, dist)) + geom_point()

诀窍似乎是调用 plot.new设置前 par , 否则很容易混淆并且无法正确遵守设置。您还需要设置 new = TRUE因此,当您调用 plot 时不会启动新页面.
#Create figure window and layout
plot.new()
grid.newpage()
pushViewport(viewport(layout = grid.layout(1, 2)))

#Draw ggplot
pushViewport(viewport(layout.pos.col = 1))
print(a_ggplot, newpage = FALSE)
popViewport()

#Draw bsae plot
pushViewport(viewport(layout.pos.col = 2))
par(fig = gridFIG(), new = TRUE)
with(cars, plot(speed, dist))
popViewport()

关于R将传统情节和ggplot2放在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21855376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com