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

如何在Plotly中为双列表绘制的曲线添加交点标注?

实现方案

要在Plotly双曲线(共用X轴)的交点处添加标注,分两步执行:计算交点坐标,再在图表中添加标注。

1. 计算两条曲线的交点

两组数据的X值通常不会完全一一对应,需要通过插值方式定位精确交点,这里用numpy实现:

import numpy as np

# 替换成你的实际数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = 0.5*x - 2

# 找出曲线差值符号变化的区间(交点所在区间)
diff = y1 - y2
sign_change_indices = np.where(np.diff(np.sign(diff)))[0]

# 对每个区间插值计算精确交点坐标
intersections = []
for idx in sign_change_indices:
    x_interp = np.interp(0, [diff[idx], diff[idx+1]], [x[idx], x[idx+1]])
    y_interp = np.interp(x_interp, x, y1)
    intersections.append((x_interp, y_interp))

2. 在Plotly中添加交点标注

用Plotly的add_annotation方法,为每个交点添加带箭头的标注:

import plotly.graph_objects as go

# 创建基础双曲线图表
fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=y1, name='曲线1'))
fig.add_trace(go.Scatter(x=x, y=y2, name='曲线2'))

# 遍历交点添加标注
for x_coord, y_coord in intersections:
    fig.add_annotation(
        x=x_coord,
        y=y_coord,
        text=f"交点<br>({x_coord:.2f}, {y_coord:.2f})",
        showarrow=True,
        arrowhead=2,
        ax=0,
        ay=-40  # 控制箭头偏移,避免遮挡曲线
    )

# 调整图表布局
fig.update_layout(title='带交点标注的双曲线', xaxis_title='X轴', yaxis_title='Y轴')
fig.show()

注意事项

  • 如果你的数据是离散非均匀X值,只需替换示例中的x、y1、y2为实际数组,插值逻辑通用。
  • 可自定义标注的text、arrowhead、ax/ay等参数,调整标注样式和位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:03:12