以下是一个简单的Python Tkinter程序,可以画出热图,并且可以修改标题、字体、坐标轴等
import tkinter as tk
from tkinter import ttk
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
class HeatmapApp:
def __init__(self, master):
self.master = master
master.title("Heatmap App")
# 创建控件
self.title_label = ttk.Label(master, text="Heatmap", font=("Helvetica", 16))
self.title_label.grid(row=0, column=0, columnspan=2, pady=10)
self.x_label = ttk.Label(master, text="X Axis Label:")
self.x_label.grid(row=1, column=0, padx=10, pady=5, sticky="E")
self.x_entry = ttk.Entry(master)
self.x_entry.grid(row=1, column=1, padx=10, pady=5)
self.y_label = ttk.Label(master, text="Y Axis Label:")
self.y_label.grid(row=2, column=0, padx=10, pady=5, sticky="E")
self.y_entry = ttk.Entry(master)
self.y_entry.grid(row=2, column=1, padx=10, pady=5)
self.font_label = ttk.Label(master, text="Font:")
self.font_label.grid(row=3, column=0, padx=10, pady=5, sticky="E")
self.font_entry = ttk.Entry(master)
self.font_entry.grid(row=3, column=1, padx=10, pady=5)
self.draw_button = ttk.Button(master, text="Draw Heatmap", command=self.draw_heatmap)
self.draw_button.grid(row=4, column=0, columnspan=2, pady=10)
self.figure = plt.Figure(figsize=(6, 6), dpi=100)
self.canvas = FigureCanvasTkAgg(self.figure, master=master)
self.canvas.get_tk_widget().grid(row=5, column=0, columnspan=2, padx=10, pady=10)
def draw_heatmap(self):
# 获取用户输入
x_label = self.x_entry.get()
y_label = self.y_entry.get()
font = self.font_entry.get()
# 生成数据
data = np.random.rand(10, 10)
# 绘制热图
ax = self.figure.add_subplot(111)
im = ax.imshow(data, cmap="coolwarm")
ax.set_xticks(np.arange(10))
ax.set_yticks(np.arange(10))
ax.set_xticklabels(np.arange(10))
ax.set_yticklabels(np.arange(10))
ax.set_xlabel(x_label, fontsize=font)
ax.set_ylabel(y_label, fontsize=font)
ax.set_title("Heatmap", fontsize=font)
self.figure.colorbar(im)
# 更新画布
self.canvas.draw()
root = tk.Tk()
app = HeatmapApp(root)
root.mainloop()