首先,需要导入必要的模块:tkinter、matplotlib和pandas。

import tkinter as tk
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg


# 读取数据集
data = pd.read_csv('data.csv')


# 创建主界面
root = tk.Tk()
root.title('数据可视化')


# 创建下拉列表
gender_var = tk.StringVar(value='男')
gender_option = tk.OptionMenu(root, gender_var, '男', '女')
gender_option.pack()


# 创建图形容器
figure_container = tk.Frame(root)
figure_container.pack()


# 创建散点图
def scatter_plot():
    # 获取选择的性别
    gender = 1 if gender_var.get() == '男' else 0
    
    # 创建散点图
    fig, ax = plt.subplots()
    ax.scatter(data.loc[data['gender'] == gender, 'forehead_width_cm'], 
               data.loc[data['gender'] == gender, 'forehead_height_cm'])
    ax.set_xlabel('forehead_width_cm')
    ax.set_ylabel('forehead_height_cm')
    
    # 显示图形
    canvas = FigureCanvasTkAgg(fig, figure_container)
    canvas.draw()
    canvas.get_tk_widget().pack()


# 创建柱状图
def bar_plot():
    # 获取选择的性别
    gender = 1 if gender_var.get() == '男' else 0
    
    # 创建柱状图
    fig, ax = plt.subplots()
    data_bar = data.loc[data['gender'] == gender, ['long_hair', 'nose_wide', 'nose_long', 'lips_thin', 'distance_nose_to_lip_long']]
    data_bar.sum().plot(kind='bar', ax=ax)
    
    # 显示图形
    canvas = FigureCanvasTkAgg(fig, figure_container)
    canvas.draw()
    canvas.get_tk_widget().pack()


# 创建按钮
scatter_button = tk.Button(root, text='显示散点图', command=scatter_plot)
scatter_button.pack()

bar_button = tk.Button(root, text='显示柱状图', command=bar_plot)
bar_button.pack()


# 运行主界面
root.mainloop()

解释一下代码:

首先,我们导入了必要的模块,包括tkinter、matplotlib和pandas。然后,我们读取了数据集,这里假设数据集的文件名为'data.csv'。

接下来,我们创建了主界面,并设置了标题为'数据可视化'。

然后,我们创建了一个下拉列表,用于选择性别。这里我们使用了tkinter中的StringVar和OptionMenu组件。

接着,我们创建了一个图形容器,用于显示图形。这里我们使用了tkinter中的Frame组件。

然后,我们分别创建了散点图和柱状图的函数。这里我们使用了matplotlib中的scatter和bar函数。

最后,我们创建了两个按钮,分别用于显示散点图和柱状图。这里我们使用了tkinter中的Button组件。

最后,我们运行主界面。运行后,我们就可以选择性别,并查看对应的散点图和柱状图了。随着选择的改变,图也会在本窗口中改变。

Python Tkinter 数据可视化:性别筛选散点图和柱状图

原文地址: https://www.cveoy.top/t/topic/ozVG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录