我在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")
发布于 2018-01-06 10:01:22
通过将绘图转换为gtable,很容易设置固定的宽度,请注意这不是一个稳定的界面,因此将来可能会停止工作。
library(ggplot2)
library(grid)
library(gridExtra)
plot_random <- function(){
ggplot() +
labs(y=paste(letters[sample(1:24, sample(1:3))], collapse = "\n"))
}
pl <- replicate(3, plot_random(), simplify = FALSE)
gl <- lapply(pl, ggplotGrob)
wl <- lapply(gl, function(g) g$widths[4])
wmax <- do.call(unit.pmax, wl)
gl <- lapply(gl, function(g) {g$widths[4] <- wmax; g})
grid.arrange(arrangeGrob(grobs = pl, top = "Normal case"),
arrangeGrob(grobs = gl, top = "Standardised left"))
https://stackoverflow.com/questions/48121528
复制相似问题