You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中移除三元图上叠加的XY坐标系网格线

解决Plotly三元图中多余XY坐标系网格线的问题

我完全懂你的困扰——用plot_ly绘制三元散点图时,默认的XY笛卡尔坐标系网格线会莫名叠加在三元图上面,而你只想保留三元图自身的网格线对吧?别着急,这个问题只需要在layout()里加几行配置就能解决。

问题根源

plot_ly默认会初始化一套标准的XY坐标系,哪怕你指定了scatterternary类型,这套坐标系还是会默认显示出来,这就是你看到的多余网格线的来源。我们只需要手动把这套XY坐标系隐藏掉就行。

修改后的完整代码

axis <- function(title) {
  list(
    title = title,
    titlefont = list(
      size = 20
    ),
    tickfont = list(
      size = 15
    ),
    tickcolor = 'rgba(0,0,0,0)',
    ticklen = 5
  )
}
at <- list(title = "Ler <4mu", # titlefont=list(size=20),
           font=list(size=20),
           tickfont=list(size=16),
           range= list(n=100,min=20,max=80)
)
bt <- list(title = "Fint silt 4-16mu", # titlefont=list(size=20),
           font=list(size=20),
           tickfont=list(size=16)
)
ct <- list(title = "Medium og groft silt 16-62mu", # titlefont=list(size=20),
           font=list(size=20),
           tickfont=list(size=16))
p <- plot_ly(new_data, type = 'scatterternary', mode = 'markers',
             a = as.numeric(new_data$Fraktion1),
             b = as.numeric(new_data$Fraktion2),
             c = as.numeric(new_data$Fraktion3),
             color= as.numeric(new_data$Vandoptag),
             marker = list(
               size = 12
             )
) %>%
  layout(
    title = "",
    margin = list(l = 0, r=0, t=50, b=100),
    # 新增:隐藏默认的XY坐标系
    xaxis = list(visible = FALSE),
    yaxis = list(visible = FALSE),
    ternary = list(
      sum = 100,
      aaxis = at , baxis = bt, caxis = ct
    )
)
p

关键修改点

在layout()函数里,我们新增了xaxis和yaxis的配置:

  • visible = FALSE会直接隐藏整个XY坐标系,包括它的网格线、刻度和轴标签,完全不会影响三元图自身的网格和轴配置。

这样修改后,你就能得到只有三元图自身网格的干净图表了!

内容的提问来源于stack exchange,提问作者Mike Messerli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 16:33:11