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
相关产品推荐
相关产品推荐

