问候,我试图通过将ggplot2
参数theme()
设置为例如,使用plot.background
绘制具有深色背景的地图。 element_rect(fill = "#000000")
,但使用coord_map()
从笛卡尔坐标系切换到地图投影会引入白色边距,只有通过将图的大小调整为与地图区域相同的比例才能删除该空白。
我如何删除此边距并将plot.background
参数指定的填充颜色应用于整个图,而不论其比例如何?
nz <- map_data("nz")
ggplot(nz, aes(x = long, y = lat, group = group)) +
geom_polygon(fill = "white", colour = "black") +
coord_map() +
theme_void() +
theme(plot.background = element_rect(fill = "#000000"))
经过大约两个小时的尝试不同的方法,并且想知道R绘图,尤其是ggplot2如何如此笨拙,我终于找到了解决方案here,但是它需要另一个库和其他步骤来产生这种概念上的基本调整,首先应该真的是默认设置,所以肯定有一个本机解决方案……对吗? ?
答案 0 :(得分:1)
grid软件包有一个解决方案,ggplot2使用该软件包来绘制图表。首先,通过将绘图背景颜色也设置为黑色,我将对您的绘图代码进行小的调整:
g <- ggplot(nz, aes(x = long, y = lat, group = group)) +
geom_polygon(fill = "white", colour = "black") +
coord_map() +
theme_void() +
theme(plot.background = element_rect(fill = "#000000", colour = "#000000"))
接下来,我们将g
转换为gtable
并使用网格包进行绘制:
library(grid)
gt <- ggplotGrob(g)
grid.newpage()
# Draw a black rectangle
grid.draw(rectGrob(gp = gpar(fill = "#000000")))
grid.draw(gt)
问题在于许多坐标函数为绘图设置了固定的长宽比,这反过来又会影响以绝对尺寸定义的其他绘图元素。