1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| import plotly.graph_objects as go from plotly.subplots import make_subplots
# 创建子图(移除标题) fig = make_subplots(rows=2, cols=1, shared_xaxes=True)
# 添加收盘价的线图 fig.add_trace(go.Scatter(x=df.index, y=df['收盘'], mode='lines', name='收盘价'), row=1, col=1)
# 添加简单收益的线图 fig.add_trace(go.Scatter(x=df.index, y=df['简单收益'], mode='lines', name='简单收益'), row=2, col=1)
# 设置Y轴标签(替代标题) fig.update_yaxes(title_text="收盘价格", row=1, col=1) fig.update_yaxes(title_text="收益率", row=2, col=1)
# 添加注释到第一个子图(关键点标注) fig.add_annotation( x = df['收盘'].idxmax(), # 标注最高点 y=df['收盘'].max(), text="历史最高点", showarrow=True, arrowhead=2, ax=-50, # 箭头水平偏移量[8](@ref) ay=-30, # 箭头垂直偏移量[8](@ref) row=1, col=1 )
# 添加注释到第一个子图(趋势说明) fig.add_annotation( x=df.index[10], y=df['收盘'].mean(), text="上升趋势开始", xref="x1", yref="y1", showarrow=False, font=dict(size=12, color="green"), bgcolor="rgba(255,255,255,0.5)" )
# 统一布局设置 fig.update_layout( title='股票数据趋势分析', hovermode="x unified", # 联动悬停效果 xaxis_title="日期", height=600, margin=dict(l=50, r=30, t=80, b=50) )
# 显示图形 fig.show()
|