2014-10-06 65 views
3

我正在批处理模式下绘制阴谋。在查看图表时,放大感兴趣的用户区域将很有用。是否有一种方法可以在绘图后缩放/重新缩放轴,然后将其恢复到原始轴范围?创建/检查后放大ggplot

答案,结合反馈和意见....

set.seed(5) 
gplist<-list() 
for (i in seq(1,29)) { 
    mod_evt = paste("plot",i) 
    df <- data.frame(x=runif(10), y=runif(10)) 
    gp <- ggplot(df,aes(x=x,y=y)) + geom_line() + geom_point() + 
    labs(title = mod_evt, x="X", y="Y") 
    print(gp) 
    gplist[[i]] <- gp 
} 

后,我想放大接近X = 0.52是浸在积27

print(gplist[[27]] + coord_cartesian(xlim= c(.5,.6))) 

这再现了剧情x轴放大到0.5和0.6之间。

+0

列表如果保存ggplot对象(而不仅仅是地块),是的。您可以从R数据文件重新加载它们并更改任何'scale_'参数。 – hrbrmstr 2014-10-06 22:15:02

+0

好吧,我会那么做...谢谢。 – user3969377 2014-10-06 22:15:44

+0

1.更好的形式是执行'gplist [[i]] < - gp'而不是'gplist < - c(gplist,gp)'。 – Gregor 2014-10-06 22:52:56

回答

7

是,使用coord_cartesian(或适当的coord_xxxx

ex <- ggplot(mtcars, aes(x=mpg,y=drat, colour=factor(cyl))) + geom_point() 

ex 

enter image description here

# plot with "zoomed region" 
ex + coord_cartesian(xlim = c(10,25),ylim= c(3,5)) 

enter image description here

# the original still exists 
ex 

enter image description here

如果有地块

plot_list <- list(ggplot(mtcars, aes(x=mpg,y=drat, colour=factor(cyl))) + geom_point(), 
        ggplot(mtcars, aes(x=mpg,y=drat, colour=factor(am))) + geom_point()) 
zoomed <- lapply(plot_list, function(p) p + coord_cartesian(xlim= c(15,30))) 


# or for a single plot 
plot_list[[1]] + coord_cartesian(xlim= c(15,30)) 
+0

我有循环中生成的图。我可以使用什么类型的变量来存储索引的图,矢量? – user3969377 2014-10-06 22:20:56

+2

将图表存储在列表中。 – 2014-10-06 22:22:01

+0

@ user3969377 - 我添加了一个很简单的例子... – mnel 2014-10-06 22:30:18