Python Tkinter 数据可视化:性别散点图和特征柱状图
以下是一个简单的示例代码,使用 Tkinter 库创建一个窗口,实现对数据库中数据的可视化,包括按性别查看额头宽度和高度的散点图,以及按长发、宽鼻子、长鼻子、细嘴唇、鼻唇距离等特征查看柱状图。
import tkinter as tk
import matplotlib.pyplot as plt
import numpy as np
import sqlite3
# 创建窗口
window = tk.Tk()
window.title('数据可视化')
window.geometry('800x600')
# 连接数据库
conn = sqlite3.connect('data.db')
cursor = conn.cursor()
# 创建标签和下拉菜单
label_gender = tk.Label(window, text='按性别查看散点图:')
label_gender.pack()
var_gender = tk.StringVar(window, '男')
option_gender = tk.OptionMenu(window, var_gender, '男', '女')
option_gender.pack()
label_feature = tk.Label(window, text='按特征查看柱状图:')
label_feature.pack()
var_feature = tk.StringVar(window, '长发')
option_feature = tk.OptionMenu(window, var_feature, '长发', '宽鼻子', '长鼻子', '细嘴唇', '长鼻子到嘴巴距离')
option_feature.pack()
# 定义按钮点击事件
def scatter_plot():
gender = var_gender.get()
if gender == '男':
gender_code = 1
else:
gender_code = 0
cursor.execute('SELECT forehead_width_cm, forehead_height_cm FROM data WHERE gender=?', (gender_code,))
data = cursor.fetchall()
x = [d[0] for d in data]
y = [d[1] for d in data]
plt.scatter(x, y)
plt.xlabel('forehead_width_cm')
plt.ylabel('forehead_height_cm')
plt.show()
def bar_chart():
feature = var_feature.get()
if feature == '长发':
feature_code = 'long_hair'
elif feature == '宽鼻子':
feature_code = 'nose_wide'
elif feature == '长鼻子':
feature_code = 'nose_long'
elif feature == '细嘴唇':
feature_code = 'lips_thin'
else:
feature_code = 'distance_nose_to_lip_long'
cursor.execute(f'SELECT COUNT(*) FROM data WHERE {feature_code}=0')
count0 = cursor.fetchone()[0]
cursor.execute(f'SELECT COUNT(*) FROM data WHERE {feature_code}=1')
count1 = cursor.fetchone()[0]
labels = ['0', '1']
values = [count0, count1]
plt.bar(labels, values)
plt.xlabel(feature)
plt.ylabel('数量')
plt.show()
# 创建按钮
button_scatter = tk.Button(window, text='查看散点图', command=scatter_plot)
button_scatter.pack()
button_bar = tk.Button(window, text='查看柱状图', command=bar_chart)
button_bar.pack()
# 运行窗口
window.mainloop()
# 关闭数据库连接
conn.close()
代码中使用了 Tkinter 库创建了一个窗口,包含了两个下拉菜单和两个按钮。用户可以选择按性别查看额头宽度和高度的散点图,或者按长发、宽鼻子、长鼻子、细嘴唇或长鼻子到嘴巴距离查看柱状图。点击按钮后,程序会从数据库中读取数据,然后使用 matplotlib 库绘制相应的图形。注意在代码中需要根据实际情况修改数据库连接和数据查询语句。
原文地址: https://www.cveoy.top/t/topic/ozU0 著作权归作者所有。请勿转载和采集!