怎么用python语言设计一个tkinter窗口作用是数据可视化能够分别以gender:男女男1女0在本窗口中查看显示data数据集中forehead_width_cm浮点数绘制一个直方图将forehead_width_cm分布的数据按照一定的间隔进行分组并将每组数据的数量表示出来。XY轴的设置如下:X轴:forehead_width_cm;Y轴:count;间隔:根据数据的范围和数量进行选择使得
以下是一个简单的示例代码,可以根据需求进行修改和完善:
import tkinter as tk
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据集
data = pd.read_csv('data.csv')
# 创建窗口
window = tk.Tk()
window.title('数据可视化')
window.geometry('800x600')
# 创建下拉列表和标签
gender_var = tk.StringVar()
gender_label = tk.Label(window, text='请选择性别:')
gender_label.pack()
gender_select = tk.OptionMenu(window, gender_var, '男', '女')
gender_select.pack()
feature_var = tk.StringVar()
feature_label = tk.Label(window, text='请选择图的特征:')
feature_label.pack()
feature_select = tk.OptionMenu(window, feature_var, 'forehead_width_cm', 'forehead_height_cm', 'long_hair', 'nose_wide', 'nose_long', 'lips_thin', 'distance_nose_to_lip_long')
feature_select.pack()
# 创建画布和坐标轴
fig = plt.figure(figsize=(6, 4), dpi=100)
canvas = tkagg.FigureCanvasTkAgg(fig, master=window)
canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)
ax = fig.add_subplot(111)
# 定义更新图形的函数
def update_plot():
# 根据选择的特征和性别,筛选数据集
if gender_var.get() == '男':
sub_data = data[data['gender'] == 1]
else:
sub_data = data[data['gender'] == 0]
x = sub_data[feature_var.get()]
# 绘制直方图
ax.clear()
ax.hist(x, bins='auto')
ax.set_xlabel(feature_var.get())
ax.set_ylabel('count')
ax.set_title('Histogram of {} for {}'.format(feature_var.get(), gender_var.get()))
fig.tight_layout()
canvas.draw()
# 绑定选择事件和更新函数
gender_var.trace('w', lambda *args: update_plot())
feature_var.trace('w', lambda *args: update_plot())
# 初始化图形
update_plot()
# 运行窗口
window.mainloop()
``
原文地址: http://www.cveoy.top/t/topic/g1Fo 著作权归作者所有。请勿转载和采集!