python用tkinter写一个画热图的软件

以下是一个简单的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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值