将ggplot网格线置于前景

11

我想知道是否有一种方法让 ggplot 将其网格线绘制在绘制的数据前面。据我所知,我可以使用 theme() 轻松格式化几乎所有内容,这方面效果很好。然而,我找不到元素绘制顺序的选项。我可以向图形中添加附加线条,但需要预先格式化它们(坐标、线条组等)。听起来比必要的要复杂。因此,我希望能够修改绘图网格本身来完成这项工作。

下面是我通常如何绘制加载的 shapefile sf 的数据框 sf.df 的示例:

(ggplot(sf.df, aes(x=long, y=lat))
+ geom_polygon(data=sf.df, aes(group=group, fill=NFK))
+ theme(panel.grid.major=element_line(colour="black"))
+ coord_map(xlim=c(7.08, 7.14), ylim=c(50.93, 50.96))
)

提前感谢您!


3
您无法通过“主题”来完成这个任务。我认为您只需要两个额外的几何对象,一个是“geom_hline”,另一个是“geom_vline”。 - joran
好的,那我就得依靠这两个了。当一切都在自制的绘图函数中设置好时,它们能够很好地工作。必须相应地调整刻度,并且背景中的网格必须是不可见的。感谢您指引我走向看似最少痛苦的方向 :) - Florian R. Klein
3
这个问题已经有答案了,可以在这里查看:https://dev59.com/0VsX5IYBdhLWcg3wS97o 。简单来说,就是使用以下代码:theme(panel.ontop=TRUE, panel.background = element_rect(fill = NA)) - AF7
1个回答

12

如 @joran 建议,使用 geom_hlinegeom_vline 绝对是一个解决方案。只需分别定义 yinterceptxintercept,如下所示:

...
+ geom_vline(xintercept=seq(7.08, 7.14, by=0.01))
+ geom_hline(yintercept=seq(50.93, 50.96, by=0.01))
...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接