数据可视化热图工具: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 = rootself.root.title("热图生成工具")self.root.geometry("1000x700")# 数据和配置self.data = Noneself.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=<