报错提示为找不到文件"temp.png",可能是因为在执行更新图函数之前,还未生成图片文件。可以尝试在更新图函数中先保存图像,再绘制到画布上,代码如下:

def update_plot():
    # 获取选择的性别和特征
    gender = int(gender_var.get() == '男')
    feature = feature_var.get()
    
    # 根据选择的特征绘制不同的图形
    if feature in ['forehead_width_cm', 'forehead_height_cm']:
        # 绘制散点图
        df = data[data['gender'] == gender][feature]
        # 计算分组间隔
        bin_width = (df.max() - df.min()) / 10
        # 绘制直方图
        plt.hist(df, bins=np.arange(df.min(), df.max()+bin_width, bin_width), align='mid', histtype='bar', rwidth=0.8)
        plt.xlabel(feature)
        plt.ylabel('count')
        plt.savefig('temp.png')  # 保存图像
        plt.show()
    else:
        # 绘制柱状图
        plt.bar([0, 1], [data[(data['gender'] == gender) & (data[feature] == 0)].shape[0], data[(data['gender'] == gender) & (data[feature] == 1)].shape[0]])
        plt.xticks([0, 1], ['0', '1'])
        plt.xlabel(feature)
        plt.ylabel('count')
        plt.title(f'{feature} ({gender})')
        plt.savefig('temp.png')  # 保存图像
    
    # 清空画布并绘制新图
    canvas.delete('all')
    canvas.create_rectangle(0, 0, canvas.winfo_width(), canvas.winfo_height(), fill='white')
    canvas.create_image(canvas.winfo_width() / 2, canvas.winfo_height() / 2, image=tk.PhotoImage(file='temp.png'))
``
import tkinter as tkfrom tkinter import ttkimport pandas as pdimport numpy as npimport matplotlibpyplot as plt# 加载数据集data = pdread_csv性别分类数据集0csv# 创建主窗口root = tkTkroottitle数据可视化rootgeometry800x600# 创建

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

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