导出matplotlib pdf,文本不是来自tkinter的路径

时间:2016-11-17 13:40:21

标签: python pdf canvas matplotlib tkinter

我有一个简单的GUI,可以绘制如下图:

def display_graph(self,f1):

     self.canvas = FigureCanvasTkAgg(f1, self)
     self.canvas.show()
     self.canvas.get_tk_widget().place(anchor = N ,x = 200 ,y= 150)
     self.get_all_figures()
     self.canvas._tkcanvas.place(anchor = N ,x = 675 ,y= 325)
     self.toolbar_frame = Frame(self)
     toolbar = NavigationToolbar2TkAgg(self.canvas, self.toolbar_frame)
     self.toolbar_frame.place(anchor = N ,x = 540 ,y= 933)

有一些像xlabel,ylabel这样的文本,用户应该能够以pdf格式导出。为了处理图形,如果显示的文本也是例如Illustrator中的文本对象,那将是很好的,但它被识别为路径。 (没有字体信息)。 我更改了pyl.rcParams['pdf.fonttype'] = 42但它只在我直接从控制台绘图时才起作用。 有没有一个技巧可以使用画布从GUI中实现?

要保存图像,我想使用工具栏和此功能(取决于用户点击的内容)

def save_all(figures,save_path_name,curr = 'all'):
 try:
      pp = PdfPages(save_path_name)

      if curr == 'last':

          pp.savefig(figures[-1])  

      else:
           for i in figures:
                pp.savefig(i)
      pp.close()
 except (OSError, IOError) as e:
          messagebox.showinfo('Error ...',e)
          return 

1 个答案:

答案 0 :(得分:0)

这就是诀窍。在绘制任何图形之前,每次都会基本更新。但即使我在rc文件中更改,我也无法使其正常工作。很奇怪也许我在监督一些事情。

def display_graph(self,f1):
 plt.rcParams['pdf.fonttype'] = 42
 matplotlib.rcParams['pdf.fonttype'] = 42

 self.canvas = FigureCanvasTkAgg(f1, self)
 self.canvas.show()
 self.canvas.get_tk_widget().place(anchor = N ,x = 200 ,y= 150)
 self.get_all_figures()
 self.canvas._tkcanvas.place(anchor = N ,x = 675 ,y= 325)
 self.toolbar_frame = Frame(self)
 toolbar = NavigationToolbar2TkAgg(self.canvas, self.toolbar_frame)
 self.toolbar_frame.place(anchor = N ,x = 540 ,y= 933)