Python Matplotlib savefig仅保存图像,不保存线条

Python Matplotlib savefig仅保存图像,不保存线条,python,matplotlib,Python,Matplotlib,使用figure.savefig(path)保存一个matplotlib图形。这会将我在画布上的图像保存在图形中,但不会保存我在图像上绘制的线条 以下是我如何塑造我的身材: if new: y, x = self.model.get_image_shape() self.figure = Figure(figsize=(x*2/72.0, y*2/72.0), dpi=72) self.canvas = FigureCanvasWxAgg(self.scroll, -1,

使用
figure.savefig(path)
保存一个matplotlib图形。这会将我在画布上的图像保存在图形中,但不会保存我在图像上绘制的线条

以下是我如何塑造我的身材:

if new:
    y, x = self.model.get_image_shape()
    self.figure = Figure(figsize=(x*2/72.0, y*2/72.0), dpi=72)
    self.canvas = FigureCanvasWxAgg(self.scroll, -1, self.figure)
    self.canvas.SetBackgroundColour('grey')
self.axes = self.figure.add_axes([0.0, 0.0, 1.0, 1.0])
self.axes.set_axis_off()
self.axes.imshow(self.model.get_image(), aspect='auto')
self.axes.set_autoscale_on(False)
self.mpl_bindings()
y, = self.scroll.GetSizeTuple()[-1:]
iHt, = self.model.get_image_shape()[:-1]
self.aspect = (float(y)/float(iHt)) # zoom factor (0.0 - 1.0)
self.controller.resize_image() # Resizes our figure according to the zoom factor
现在,我在画布上绘制(使用
draw\u artist
方法):

这在程序中非常有效(在图像上显示行),但是当我尝试使用
savefig()
时,只有图像保存,而不是行

图像应如下所示(保存为PNG后):

但我明白了:

这就是我正在做的来保存这个数字:

self.view.figure.savefig(dialog.GetPath(), dpi=self.view.figure.dpi)
你知道为什么这可能不会保存我正在绘制的线条,而只保存正在绘制线条的图像吗

多谢各位


编辑:这里有一个SSCCE:(只需更改要加载的保存位置和图像)。

感谢SSCCE。如果禁用
animated=True
,则一切正常。如果您需要animated=True,可能值得向mpl邮件列表询问他们是否有进一步的见解。

@nye17,它是一个扩展wx.Frame:
类视图(wx.Frame):
,在我的另一个类中,我将其实例化为:
self.View=dicom\u视图(self,self.model)
self
是我的控制器
self.model
是我的模型,我可以从中获取所有图像信息。你保存的格式是什么?@pelson,我将照片保存为PNG。你是否将艺术家添加到轴ala
轴。添加艺术家
?@pelson,不,我不是;然而,这似乎并没有解决问题。谢谢你的建议。我添加了
self.axes.add\u-artist(line)
self.axes.add\u-artist(vertex)
self.axes.add\u-artist(polyline.label)
在每次draw\u-artist调用下。感谢您的建议。我会在周一的工作中试试这个,然后告诉你。你建议的改变对佩尔森有效,谢谢。但是,我确实需要对这些行设置动画,所以我所做的就是在保存图像时设置
animated=False
,然后在保存后重置
animated=True
self.view.figure.savefig(dialog.GetPath(), dpi=self.view.figure.dpi)