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

PyQt5嵌入Matplotlib图表时出现重复坐标轴标签该如何解决?

PyQt5嵌入Matplotlib坐标轴重复显示修复方案

问题原因

代码对同一个Matplotlib Figure对象重复创建了子图,两个子图重叠导致坐标轴重复渲染:

  • Canvas类初始化时,已经执行self.axes = fig.add_subplot(111)创建了第一个子图
  • 后续plot方法中再次调用canvas.figure.add_subplot(111),在同一个画布上生成了第二个重叠的子图

原问题运行异常效果如下:
运行结果截图

修复方案

两种方案二选一即可:

方案1:复用Canvas中已创建的子图

修改plot方法,直接调用Canvas实例已初始化好的axes对象,无需重复创建子图:

def plot(self, canvas):
    x= np.linspace(0, 1, 200)
    y = np.sinc(x)
    # 替换原有新建子图的代码,直接复用已创建的axes
    ax = canvas.axes
    ax.plot(x,y)

方案2:删除Canvas类中冗余的子图创建代码

删掉Canvas初始化时的子图创建逻辑,仅在plot方法中创建一次子图:

class Canvas(FigureCanvas):
    def __init__(self, parent=None, width=5, height=5, dpi = 100):
        fig = Figure(figsize=(width, height), dpi=dpi)
        # 删除下方这行冗余的子图创建代码
        # self.axes = fig.add_subplot(111)
        FigureCanvas.__init__(self, fig)
        self.setParent(parent)

修改完成后重新运行代码,重叠的坐标轴就会消失,显示正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:54:03