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

Plotly绘制全年周度下载量折线图时线条截断问题求助

问题成因
  • 核心原因是x轴数据类型和配置的格式化规则不匹配。你为x轴设置的tickformat="%Y-%W"是仅适用于日期时间类型坐标轴的格式参数,但你传入x轴的Week_Number是数值/字符串类型的周序号,不属于标准datetime格式,Plotly无法正确解析这类值为日期,会错误计算x轴的显示范围,最终导致折线仅展示了部分能被解析的区间,看起来像被截断。
  • 次要场景:如果你的Week_Number是年份+周序号的组合数值(如202301代表2023年第1周),Plotly会默认将x轴识别为线性数值轴,跨年时202252到202301的数值差远大于1,轴上会出现大量空白,也会呈现折线截断的视觉效果。
解决方案

核心思路是将x轴数据转换为标准的datetime类型,再配置格式化规则:

  1. 若原始数据存在日期列(假设列名为date,已转为datetime类型),分组时直接生成周级别的标准日期:
# 生成每周起始日期作为周维度的标识
Downloads['week_start'] = Downloads['date'].dt.to_period('W').dt.start_time
# 按周起始日期分组聚合
Downloads_weekly = Downloads.groupby('week_start').agg({'Daily Installs' : 'sum'}).reset_index()

# 绘图时x轴使用标准日期列
fig1 = px.line(Downloads_weekly, x='week_start', y= 'Daily Installs')
# 此时tickformat可以正常生效
fig1.update_xaxes(
    tickformat="%Y-%W"
)
fig1.show()
  1. 若只有年份、周序号两列数据,可以手动拼接生成标准日期:
# 假设年份列名为year,周序号列名为Week_Number
Downloads_weekly['week_date'] = pd.to_datetime(
    Downloads_weekly['year'].astype(str) + Downloads_weekly['Week_Number'].astype(str) + '1', 
    format='%Y%W%w'
)
# 后续绘图x轴使用week_date即可
  1. 兜底方案:若仍存在范围显示问题,可以手动指定x轴的显示区间:
fig1.update_xaxes(
    range=[Downloads_weekly['week_start'].min(), Downloads_weekly['week_start'].max()]
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:24:04