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

如何在Plotly Python的新冠每日病例图中添加事件标记?

Plotly Python 添加事件标记的实现方案

针对你在COVID-19病例趋势图中添加封锁、病毒变种等事件标记的需求,Plotly有两种实用的实现方式:

方法1:添加垂直参考线+固定文本注释

适合需要在特定日期位置添加贯穿整个图表的竖线,并搭配固定文字标签的场景,比如标记"首次封锁":

import plotly.graph_objects as go
import pandas as pd

# 模拟COVID病例数据(替换成你的真实数据)
dates = pd.date_range(start='2020-03-01', end='2020-05-01', freq='D')
cases = [i**1.2 + 100 for i in range(len(dates))]

# 初始化图表
fig = go.Figure(data=go.Scatter(x=dates, y=cases, mode='lines', name='每日病例'))

# 添加首次封锁的垂直参考线
fig.add_shape(
    type='line',
    x0='2020-03-15', x1='2020-03-15',  # 封锁日期
    y0=0, y1=1,
    xref='x', yref='paper',  # yref='paper'让线贯穿整个Y轴高度
    line=dict(color='red', width=2, dash='dash')
)

# 添加对应注释文本
fig.add_annotation(
    x='2020-03-15',
    y=max(cases)*0.8,  # 文本位置设为病例峰值的80%高度
    text='首次封锁',
    showarrow=True,
    arrowhead=1
)

fig.update_layout(title='COVID-19每日病例趋势', xaxis_title='日期', yaxis_title='病例数')
fig.show()

关键参数说明:

  • yref='paper':让竖线从图表底部延伸到顶部,不受Y轴数据范围影响
  • dash='dash':设置虚线样式,和趋势线区分开
  • 注释的y参数可以根据数据范围调整,避免遮挡趋势线

方法2:添加事件标记点+悬浮提示/直接文本

适合需要添加离散标记点,且希望鼠标悬浮时显示详细事件信息的场景:

import plotly.graph_objects as go
import pandas as pd

# 模拟病例数据
dates = pd.date_range(start='2020-03-01', end='2020-05-01', freq='D')
cases = [i**1.2 + 100 for i in range(len(dates))]

# 定义事件列表(替换成你的真实事件)
events = {
    '日期': ['2020-03-15', '2020-04-01'],
    '事件': ['首次封锁', 'Alpha变种出现'],
    '标记位置': [max(cases)*0.9, max(cases)*0.7]  # 每个事件的Y轴位置
}
event_df = pd.DataFrame(events)
event_df['日期'] = pd.to_datetime(event_df['日期'])

# 初始化图表
fig = go.Figure()
# 添加病例趋势线
fig.add_trace(go.Scatter(x=dates, y=cases, mode='lines', name='每日病例'))
# 添加事件标记点
fig.add_trace(go.Scatter(
    x=event_df['日期'],
    y=event_df['标记位置'],
    mode='markers+text',  # 同时显示标记点和文本
    text=event_df['事件'],
    textposition='top center',
    marker=dict(color='orange', size=10),
    name='关键事件'
))

fig.update_layout(title='COVID-19每日病例趋势', xaxis_title='日期', yaxis_title='病例数')
fig.show()

如果只需要鼠标悬浮时显示事件信息,把mode改成markers,并添加hovertext=event_df['事件']即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 07:48:45