如何设置ggtern三元图中点显示在三角形边框上方?
解决ggtern三元图边框遮挡点的问题
我完全懂你的困扰——三元图的边框默认绘制层级确实会盖在点上面,那些刚好落在边框上的点被挡得特别明显。其实只需要一行代码就能快速调整层级,让点完整显示在边框上方。
具体修改方案
在你的绘图代码末尾添加一行,修改主题里tern.panel.border的zorder(绘制层级),把它设为比点的层级更低就行(geom_point默认zorder是2,我们把边框设为1即可):
ggtern(data=females, aes(urban, agri,marine)) + geom_point(pch=21, col='black', bg='dodgerblue3', size=2) + geom_point(data=males, pch=21, col='black', bg='orange', size=2) + theme(tern.panel.border = element_line(zorder = 1)) # 关键修改:降低边框绘制层级
原理说明
ggtern的三元边框是通过主题元素tern.panel.border渲染的,它默认的zorder比点图层更高,所以会覆盖在点的上面。通过手动设置zorder=1,让边框在更低的层级绘制,点(默认zorder=2)自然就会显示在边框上方了。
适配你的数据集
比如你数据里的Silke(marine=0,落在urban-agri边上)、Mirte(urban=0,落在agri-marine边上)、Claude(marine=0)这些原本被遮挡的点,修改后就能完整显示出来。
内容的提问来源于stack exchange,提问作者Beardedant
相关产品推荐
相关产品推荐

