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
相关产品推荐
相关产品推荐

