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

绘制timedelta类型数据时坐标轴范围异常问题求助

Plotly绘制timedelta类型数据时Y轴显示异常的修复方案

问题背景

现有如下结构的DataFrame:

commits     commitdates       Age (in days)  Year-Month  server_version
0         97        2021-04-07       75 days    2021-04          v1
1         20        2021-05-31       43 days    2021-05          v3
2         54        2021-06-21       54 days    2021-06          v0.1
3         100       2021-06-18       75 days    2021-06          v2.1.0
4         12        2020-12-06       22 days    2020-12           NaN

需求:以server_version为X轴,commits(int64类型)为颜色区分,绘制Age (in days)(timedelta64[ns]类型)的数据。使用Plotly绘图后,Age值显示异常,无法像普通整数一样从0开始正常显示。原代码如下:

import plotly.express as px
fig = px.scatter(final_api, x="Version", y="Age (in days)", color="commits", width =1000, height = 800)
fig.show()

解决方案

问题根源是Plotly对timedelta64[ns]类型的解析逻辑:它会将时间差转换为基于起始时间戳的数值,而非直观的天数。只需将timedelta类型转换为整数天数即可修复:

  1. 转换timedelta列为整数天数
    在绘图前,提取Age (in days)的天数数值,生成新列或替换原列:

    # 提取天数整数,生成新列
    final_api['Age (days)'] = final_api['Age (in days)'].dt.days
    
  2. 修改Plotly绘图代码
    注意原代码中X轴参数"Version"是笔误,应改为实际列名"server_version";同时使用转换后的整数列作为Y轴:

    import plotly.express as px
    fig = px.scatter(final_api, x="server_version", y="Age (days)", color="commits", width=1000, height=800)
    # 强制Y轴从0开始显示
    fig.update_layout(yaxis=dict(range=[0, final_api['Age (days)'].max() + 5]))
    fig.show()
    
  3. 可选:处理缺失值
    如果需要过滤server_version为NaN的行,可在绘图前添加:

    final_api = final_api.dropna(subset=["server_version"])
    

效果说明

转换后,Y轴会以整数天数为单位,从0开始正常显示数值,颜色也会根据commits的大小正常区分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:35:36