Matplotlib简单绘图中y值显示不准确问题求助
Matplotlib悬停坐标偏差问题解析
问题根源:你看到的悬停坐标并非原始数据点的精确值,而是Matplotlib根据屏幕像素位置计算的插值结果。
你的代码生成了10000个数据点,但绘图窗口的像素宽度远小于这个数量,Matplotlib会自动对数据降采样以适配屏幕显示。鼠标悬停时,工具会基于鼠标所在的屏幕像素位置,在相邻的显示点之间做线性插值,因此会出现和原始数据有偏差的数值(比如x=0附近的插值结果偏离真实的y=1)。快速验证:把数据点数量改成
np.linspace(-5,5,10)再运行,悬停查看x=0附近的点,就能看到精确的y=1——因为此时数据点数量少,屏幕能完整显示所有原始点,悬停时取的就是真实数据值。解决方式:
- 直接验证原始数据:在代码中添加打印语句确认数据正确性:
print(y[np.isclose(x, 0)]) # 输出[1.],证明原始数据没问题 - 查看精确数据点:可以使用Matplotlib的自定义数据光标工具,或者添加交互式点击事件来触发真实数据点的显示;部分Matplotlib后端支持切换到精确数据点悬停模式,也能解决这个问题。
- 直接验证原始数据:在代码中添加打印语句确认数据正确性:
内容的提问来源于stack exchange,提问作者Ashton
相关产品推荐
相关产品推荐

