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

PyQtGraph光标悬停持续报错,图表无法显示问题求助

问题诊断与解决

核心原因

错误提示中的dtype('<U8')表明你导入的CSV数据是字符串类型,而非数值类型。PyQtGraph在光标移动时会自动计算绘图边界,此过程调用了numpy的nanmin函数,该函数无法处理字符串数组,因此持续触发报错。

解决步骤

1. 强制将CSV数据转换为数值类型

读取CSV时必须显式把列转换为float或int,以下是两种常见读取方式的修正示例:

用Pandas读取(推荐)

import pandas as pd
import pyqtgraph as pg

# 方式1:指定列的数据类型(适用于有表头的CSV)
df = pd.read_csv("your_data.csv", dtype={"列1名称": float, "列2名称": float})

# 方式2:自动转换指定列(适用于无表头的CSV)
df = pd.read_csv("your_data.csv", header=None, converters={0: float, 1: float})

# 提取数据并绘图
x_data = df.iloc[:, 0].values
y_data = df.iloc[:, 1].values
# 替换为你的PyQtGraph绘图组件对象
your_plot_widget.plot(x_data, y_data)

用原生CSV模块读取

import csv
import numpy as np
import pyqtgraph as pg

x = []
y = []
with open("your_data.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    next(reader)  # 若CSV有表头则跳过,无表头则删除此行
    for row in reader:
        # 跳过空行或格式无效的行
        if len(row) < 2:
            continue
        try:
            x_val = float(row[0])
            y_val = float(row[1])
            x.append(x_val)
            y.append(y_val)
        except ValueError:
            continue

# 转为numpy数组
x_arr = np.array(x)
y_arr = np.array(y)
your_plot_widget.plot(x_arr, y_arr)

2. 验证数据类型

读取数据后打印类型确认,确保不是字符串类型:

print(x_arr.dtype)  # 应为 float64 或 int64,而非 object
print(y_arr.dtype)

3. 排查CSV文件问题

  • 检查CSV是否包含非数值内容(如表头、注释、空行、格式错误的单元格)
  • 确认CSV的分隔符是否正确(默认是逗号,若为制表符需指定sep="\t")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 23:20:54