用tkinter将已经赋值好的热方图展示出来的代码
时间: 2024-02-25 14:57:14 浏览: 113
如果你已经在 Python 中生成了热方图,并将其保存为 numpy 数组或 Pillow 的 Image 对象,可以使用以下代码将其嵌入到 tkinter 窗口中:
```python
import tkinter as tk
from PIL import ImageTk, Image
import numpy as np
import matplotlib.pyplot as plt
# 生成热方图数据
data = np.random.rand(10, 10)
# 绘制热方图
fig, ax = plt.subplots()
im = ax.imshow(data, cmap='coolwarm')
# 设置 colorbar
cbar = ax.figure.colorbar(im, ax=ax)
# 将热图转换为 Pillow 的 Image 对象
buf = fig.canvas.tostring_rgb()
width, height = fig.canvas.get_width_height()
img = Image.frombytes('RGB', (width, height), buf)
# 关闭 matplotlib 窗口
plt.close()
# 创建 tkinter 窗口
root = tk.Tk()
# 将热方图转换为 tkinter 支持的 ImageTk 对象
heatmap_tk = ImageTk.PhotoImage(img)
# 创建 Label 并将热方图显示在窗口中
label = tk.Label(root, image=heatmap_tk)
label.pack()
# 进入消息循环
root.mainloop()
```
其中,`data` 是你生成的热方图数据,可以是 numpy 数组或者其他支持绘制热方图的数据类型。在这个例子中,我们使用 matplotlib 绘制热方图,并将其转换为 Pillow 的 Image 对象,最后将其显示在 tkinter 窗口中。
完整代码如下:
```python
import tkinter as tk
from PIL import ImageTk, Image
import numpy as np
import matplotlib.pyplot as plt
# 生成热方图数据
data = np.random.rand(10, 10)
# 绘制热方图
fig, ax = plt.subplots()
im = ax.imshow(data, cmap='coolwarm')
# 设置 colorbar
cbar = ax.figure.colorbar(im, ax=ax)
# 将热图转换为 Pillow 的 Image 对象
buf = fig.canvas.tostring_rgb()
width, height = fig.canvas.get_width_height()
img = Image.frombytes('RGB', (width, height), buf)
# 关闭 matplotlib 窗口
plt.close()
# 创建 tkinter 窗口
root = tk.Tk()
# 将热方图转换为 tkinter 支持的 ImageTk 对象
heatmap_tk = ImageTk.PhotoImage(img)
# 创建 Label 并将热方图显示在窗口中
label = tk.Label(root, image=heatmap_tk)
label.pack()
# 进入消息循环
root.mainloop()
```
阅读全文