数据可视化热图工具:Python实现CSV/XLS导入与EXE打包

在数据分析工作中,热图(Heatmap)是一种非常直观的可视化工具,能够清晰展示数据矩阵中的数值分布和相关性。本文将介绍如何使用Python构建一个支持CSV/XLS文件导入、热图生成并可打包为EXE的桌面应用程序。

核心功能设计

我们的热图工具将包含以下核心功能:

  • 支持CSV和Excel(XLS/XLSX)文件导入
  • 可自定义热图参数(颜色方案、标题、标签等)
  • 提供交互式热图预览
  • 支持热图导出为图片格式
  • 可打包为独立EXE文件分发

技术选型

  • 数据处理:Pandas (CSV/XLS文件解析与数据处理)
  • 可视化:Matplotlib (热图生成)
  • 用户界面:Tkinter (Python内置GUI库,无需额外安装)
  • 打包工具:PyInstaller (将Python脚本打包为EXE)

下面是完整的实现代码:

import tkinter as tk
from tkinter import filedialog, messagebox, ttk
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import numpy as np
import os

# 设置中文字体支持
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题

class HeatmapGenerator:
    def __init__(self, root):
        self.root = root
        self.root.title("热图生成工具")
        self.root.geometry("1000x700")
        
        # 数据和配置
        self.data = None
        self.file_path = None
        
        # 创建界面
        self.create_widgets()
        
    def create_widgets(self):
        # 顶部菜单栏
        menu_frame = tk.Frame(self.root)
        menu_frame.pack(fill=tk.X, padx=10, pady=10)
        
        # 文件选择按钮
        tk.Button(menu_frame, text="打开CSV/XLS文件", command=self.load_file).pack(side=tk.LEFT, padx=5)
        
        # 颜色方案选择
        tk.Label(menu_frame, text="颜色方案:").pack(side=tk.LEFT, padx=5)
        self.color_map = tk.StringVar(value="viridis")
        color_options = ["viridis", "plasma", "inferno", "magma", "cividis", 
                         "coolwarm", "RdBu", "YlGnBu", "Greens", "Reds"]
        color_menu = ttk.Combobox(menu_frame, textvariable=self.color_map, values=color_options, width=10)
        color_menu.pack(side=tk.LEFT, padx=5)
        
        # 标题输入
        tk.Label(menu_frame, text="热图标题:").pack(side=tk.LEFT, padx=<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值