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

PyQtGraph使用字符串格式X轴绘图时报错无法转浮点的问题问询

PyQtGraph的plot方法仅支持数值类型的坐标输入,直接传入字符串会触发类型转换报错。你需要采用内部数值映射+自定义刻度格式化的方案解决所有需求,具体实现如下:

实现步骤

  1. 统一转换X轴原始数据为连续整数
    将月份转换为年份*12 + 月份的整数格式,比如2020年1月对应2020*12 +1 = 24241,2020年12月对应2020*12 +12 = 24252,2021年1月自动顺延为24253,从根源避免跨年数值异常。

  2. 自定义X轴刻度格式化函数
    编写函数将上述整数反向转换为「月份-年份」的显示格式:

def format_month_year(x, pos):
    year = int(x // 12)
    month = int(x % 12)
    # 处理12月取模为0的特殊情况
    if month == 0:
        month = 12
        year -= 1
    return f"{month}-{year}"
  1. 给绘图组件的X轴绑定配置
# 获取底部X轴对象
x_axis = tela_graficos.graphicsView.getAxis('bottom')
# 绑定自定义格式化函数
x_axis.setTickFormatter(format_month_year)
# 设置刻度最小步长为1,缩放时不会生成小数刻度
x_axis.setTickSpacing(levels=[(1, 0)])
  1. 正常传入数值型X数据绘图
# 1-2020对应的映射值为24241
x = [2020 * 12 + 1]
y = [2.514]
pen = pg.mkPen(color=(255, 0, 0))
tela_graficos.graphicsView.plot(
    x, y, name="IGVj", pen=pen, symbol='+'
)

效果验证

  • 不会触发字符串转浮点的类型报错
  • 缩放时X轴始终显示整数刻度,无小数月份
  • 跨年自动识别年份,不会出现13、14等无效月份值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:24:08