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

Plotly三元图Scatterternary线条绘制异常:原因排查与修复方法

Plotly三元图Scatterternary线条异常问题的原因及修复方法

问题原因

Plotly的Scatterternary组件要求每个数据点的a、b、c三个数值之和必须严格等于1。如果不满足这个约束,组件会自动对数据进行归一化处理,导致点的实际绘制位置偏离输入的原始值,最终出现线条异常。

你的代码中:

  • Tie_line的两个点均满足a+b+c=1,因此线条显示符合预期;
  • Tie_line2的第二个点0.23891+0.0935+0.75174=1.08415,明显大于1,被自动归一化后位置偏移,导致线条错误。

修复方法

确保每个数据点的a、b、c数值之和严格为1。可以通过手动修正原始数据,或者对不符合要求的点进行归一化计算(每个值除以三个值的总和)。

修正后的代码

import plotly.graph_objects as go

# 正常的Tie_line
Tie_line = go.Scatterternary(a=[0.18716, 0.45514, None],
                             b=[0.76559, 0.0415, None],
                             c=[0.04725, 0.50336, None], mode='lines',
                             line_width=2, line_color='#0000ee', text='Tie-line 1', name="Eerste tie_line")

# 对Tie_line2的第二个点进行归一化处理,确保a+b+c=1
sum_point2 = 0.23891 + 0.0935 + 0.75174
Tie_line2 = go.Scatterternary(a=[0.03773, 0.23891/sum_point2, None],
                             b=[0.95075, 0.0935/sum_point2, None],
                             c=[0.01152, 0.75174/sum_point2, None], mode='lines',
                             line_width=2, line_color='#ff0000', text='Tie-line', name="Tweede tie_line")

fig = go.Figure(data=[Tie_line2, Tie_line])
fig.update_ternaries(aaxis_title_text='Isopropanol', baxis_title_text='Cyclohexaan', caxis_title_text='Water')
fig.update_layout(title_text='Ternair diagram', title_x=0.465)
fig.show()

运行上述代码后,Tie_line2的线条会按照预期的两个点绘制,不会再出现异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 17:12:57