在coord_equal()之后从ggplot贴图中删除顶部/底部边距

时间:2014-12-08 10:00:51

标签: r map ggplot2

我在Fedora 20上使用R 3.1.2,当使用coord_equal()时,ggplot()生成的地图顶部和底部有大的空白区域。看看这段代码:

library(maps)
library(ggplot2)
jp <- map_data("world",region=c("Japan"))
options <- par(mar=c(0,0,0,0),oma=c(0,0,0,0))
g <- ggplot(jp,aes(x=long,y=lat,group=group,fill=region))
g <- g + geom_polygon(colour="black")
g <- g + labs(x=NULL,y=NULL)
#g <- g + coord_equal(ratio=1/2)
g <- g + theme(axis.text.x=element_blank(),axis.text.y=element_blank())
g <- g + theme(plot.background=element_rect(fill="lightblue"))
g

你看到的coord_equal()行注释掉的是填充输出区域的日本地图。但是,如果取消注释coord_equal():

library(maps)
library(ggplot2)
jp <- map_data("world",region=c("Japan"))
options <- par(mar=c(0,0,0,0),oma=c(0,0,0,0))
g <- ggplot(jp,aes(x=long,y=lat,group=group,fill=region))
g <- geom_polygon(colour="black")
g <- g + labs(x=NULL,y=NULL)
g <- g + coord_equal(ratio=1/2)
g <- g + theme(axis.text.x=element_blank(),axis.text.y=element_blank())
g <- g + theme(plot.background=element_rect(fill="lightblue"))
g

发生的事情是地图面板被转换为高度的一半(相同的宽度),如浅蓝色填充所清楚看到的那样。问题是绘图区域没有变化,因此实际上你得到的是图的顶部和底部的大空白区域。使用par(mar)没有效果,因为这些不是边距,但显然如果图表包含在文档中,它们看起来就像是巨大的,不必要的边距。

我可以使用哪些选项可以防止这些空白区域出现(或在事后修剪它们)?我应该说这只是一个很小的例子。 “在现实生活中”地图更复杂,必须在飞行中生成。也就是说,面板的坐标和尺寸不应该改变,因此可能会产生图像,然后剪掉我需要的部分。如果可以避免这样的事情,那就更好了。

谢谢!

1 个答案:

答案 0 :(得分:0)

这在交互式工作时似乎只是一个问题。如果您使用ggsave来实际保存生成的图像,则可以解决问题。无论coord_equal(ratio=1/2)

的设置如何,以下实际上都会产生相同的结果
ggsave('japan.png', height=5, width=10, plot=g)

enter image description here

相关问题