如何在Python Plotly等高线图中添加极值(最大/最小)标记线
实现建议
要在等高线图上添加表示每年份最大、最小贷款冲击影响的线条,可按以下步骤修改代码:
- 计算关键指标:对
z_data按列(年份维度)分别计算最大值和最小值,得到各年份的最大、最小影响值。 - 添加折线图层:使用
plotly.graph_objects.Scatter向图中添加两条折线,分别对应最大、最小影响数据。 - 优化布局:调整图例位置,避免遮挡等高线内容。
修改后的完整代码:
import plotly.graph_objects as go import numpy as np # 替换为你的真实z_data二维矩阵(行=冲击后月份,列=年份) z_data = np.random.rand(24, 23) # 计算每列(年份)的最大、最小影响值 col_max = z_data.max(axis=0) col_min = z_data.min(axis=0) # 生成x轴坐标(对应年份/月份的连续值) x = np.arange(2000.166667, 2023, 0.0833333333333333) fig = go.Figure() # 添加等高线图层 fig.add_trace(go.Contour( z=z_data, x=x, colorscale='Turbo', showscale=True )) # 添加最大影响折线 fig.add_trace(go.Scatter( x=x, y=col_max, mode='lines', name='最大影响', line=dict(color='red', width=2) )) # 添加最小影响折线 fig.add_trace(go.Scatter( x=x, y=col_min, mode='lines', name='最小影响', line=dict(color='blue', width=2) )) fig.update_layout( title='Discrete Impulse-Response of GDP to a Unit Acceleration in Loan Growth', autosize=True, margin=dict(l=0, r=0, b=0, t=65), # 调整图例位置到图表顶部右侧,避免遮挡 legend=dict(orientation="h", yanchor="bottom", y=1.02, xanchor="right", x=1) ) fig.show()
关键说明
axis=0参数:确保按列(年份)计算最大值和最小值,匹配你的数据维度定义。- 折线样式:通过
line参数自定义颜色和宽度,让线条在等高线图中更醒目。 - 图例调整:
legend配置将图例放在图表顶部,避免覆盖核心数据区域。
内容的提问来源于stack exchange,提问作者robertdrake
相关产品推荐
相关产品推荐

