我在文档或网上没有找到这个信息,但通过阅读mathtext源代码,我能够找到解决办法。这个例子是将图像保存到文件中。
from matplotlib.mathtext import math_to_image
math_to_image("$\\alpha$", "alpha.png", dpi=1000, format='png')
您可以始终使用ByteIO,并将该缓冲区用作图像文件的替换,保留数据在内存中。或者您可以直接从由以下代码示例中的data.as_array()返回的numpy数组进行渲染(此代码还使用cmap来控制打印数学表达式的颜色)。
from matplotlib.mathtext import MathTextParser
from matplotlib.image import imsave
parser = MathTextParser('bitmap')
data, someint = parser.parse("$\\alpha$", dpi=1000)
imsave("alpha.png",data.as_array(),cmap='gray')
更新
这里是一个完整的TkInter示例,基于Tkinter文档中的Hello World! 示例,并使用了PIL库,如所请求。
import tkinter as tk
from matplotlib.mathtext import math_to_image
from io import BytesIO
from PIL import ImageTk, Image
class Application(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.pack()
self.createWidgets()
def createWidgets(self):
buffer = BytesIO()
math_to_image('$\\alpha$', buffer, dpi=1000, format='png')
buffer.seek(0)
pimage= Image.open(buffer)
image = ImageTk.PhotoImage(pimage)
self.label = tk.Label(self,image=image)
self.label.img = image
self.label.pack(side="bottom")
self.QUIT = tk.Button(self, text="QUIT", fg="red",
command=root.destroy)
self.QUIT.pack(side="top")
root = tk.Tk()
app = Application(master=root)
app.mainloop()
backend_tk
中画布的工作方式。 - tacaswell