以下是一个简单的示例代码,使用 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 库绘制相应的图形。注意在代码中需要根据实际情况修改数据库连接和数据查询语句。

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

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

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