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

pyqtgraph调用showGrid后坐标轴刻度标签被截断如何解决

问题原因

你在调用setXRange、setYRange时设置了padding=0,让绘图区域完全贴合你设定的坐标区间边界,开启网格后,坐标轴的渲染逻辑没有为边缘的刻度标签预留显示空间,因此位于最左侧、最下侧的边界刻度标签会被截断。

解决方法

你可以根据需求选择以下任意一种方案:

  • 方案一:调整坐标范围的padding值
    如果你对坐标范围的精度要求不高,可以将padding参数设置为0.01~0.05的小数值(为坐标范围的百分比),既不会明显改变你要显示的区间范围,又能预留出刻度标签的显示空间:

    p1.setXRange(0, 2*np.pi, padding=0.02)
    p1.setYRange(-1, 1, padding=0.02)
    
  • 方案二:严格保留坐标范围,手动设置视图边距
    如果你必须严格使用padding=0保证坐标范围完全匹配设定值,可以手动给视图的左侧、下侧预留像素边距放置标签,绘图区域内部的坐标范围不会受影响:

    p1.setXRange(0, 2*np.pi, padding=0)
    p1.setYRange(-1, 1, padding=0)
    # 给左侧和下侧各预留10像素空间放标签,可根据实际显示效果调整数值
    p1.getViewBox().setContentsMargins(left=10, bottom=10, right=0, top=0)
    

完整可运行示例

import numpy as np
import pyqtgraph as pg


x = np.linspace(0, 2*np.pi, 1000)
y = np.sin(x)

app = pg.mkQApp()
win = pg.GraphicsLayoutWidget(show = True)

p1 = win.addPlot(row = 0, col = 0)
p1.plot(x = x, y = y, pen = pg.mkPen(color = 'b', width = 1))
# 开启网格
p1.showGrid(x = True, y = True)
# 设置坐标范围
p1.setXRange(0, 2*np.pi, padding=0)
p1.setYRange(-1, 1, padding=0)
# 预留标签显示空间
p1.getViewBox().setContentsMargins(left=10, bottom=10, right=0, top=0)

app.exec_()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:06:04