我在同一页面上有两个ggplots,我希望它们的面板宽度相同.
一些样本数据:
dfr1 <- data.frame(
time = 1:10,
value = runif(10)
)
dfr2 <- data.frame(
time = 1:10,
value = runif(10, 1000, 1001)
)
Run Code Online (Sandbox Code Playgroud)
一个低于另一个的情节:
p1 <- ggplot(dfr1, aes(time, value)) + geom_line()
p2 <- ggplot(dfr2, aes(time, value)) + geom_line()
grid.newpage()
pushViewport(viewport(layout = grid.layout(2, 1)))
print(p1, vp = viewport(layout.pos.row = 1, layout.pos.col = 1))
print(p2, vp = viewport(layout.pos.row = 2, layout.pos.col = 1))
Run Code Online (Sandbox Code Playgroud)
如何指定每个图中的面板宽度和位置,以使它们对齐?
(我不想将图表与刻面结合起来;这在我的实际例子中是不合适的.)
我在ggplot2中制作了直方图集合,并使用ImageMagick将它们设置为gif动画.
我们的想法是假设x轴刻度在所有图形中都是相同的,但这并不完全正确,因为y轴由于标签的宽度变化而摇摆不定.如何锚定图形以使所有图形具有完全相同的轴位置?
这是我的ggplot代码,如果它有帮助:
hist.fn<-function(tier,ddf){
df<-ddf[ddf$tier==tier,]
l<-match(tier,levels(df$tier))
hist.png<-ggplot(df,aes(df$"Premium Adult Individual Age 40" ))+
geom_histogram()+
labs(title=paste0(tier," premiums in federal exchanges"),
x ="Premium", y = "Frequency")+
coord_cartesian(xlim=c(0, 1500))+
theme_bw()+
theme(text = element_text(size=14), plot.title = element_text(face="bold"),axis.title.x =element_text(face="bold"),axis.title.y =element_text(face="bold"))
file=paste0(l,"hist.jpg")
ggsave(filename=file, plot=hist.png, width=13, height=8, dpi=50)
return(hist.png)
}
data.df$tier%>% levels %>% lapply(FUN=hist.fn,ddf=data.df) ->histograms.of.tiers
system("magick -delay 75 *hist.jpg hist.gif")
Run Code Online (Sandbox Code Playgroud)