You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新手如何为matplotlib温度折线图添加下拉菜单(数据来自CSV)

实现方案

你可以使用matplotlib内置的Dropdown控件实现下拉菜单需求,以下是修改后的完整代码,默认实现下拉选择展示不同温度序列的功能,如果你需要按时段筛选,修改回调函数内的逻辑即可:

import csv
import matplotlib.pyplot as plt 
from matplotlib.widgets import Dropdown # 导入下拉菜单控件

class grafice_statice():
    def run(self):
        # 数据读取部分保持不变
        x=[]
        y=[] 
        z=[]
        w=[]
        with open('temperatura.csv', 'r') as csvfile:
            date = csv.reader(csvfile, delimiter=',')
            for row in date:
                try:
                    y.append(float(row[0]))
                    z.append(float(row[1]))
                    w.append(float(row[2]))
                    x.append(row[3])
                except Exception as e:
                    pass

        # 调整画布布局,预留下拉菜单的位置
        fig, ax = plt.subplots(figsize=(10,6))
        plt.subplots_adjust(top=0.9) # 顶部留出空间放下拉菜单

        # 初始默认展示全部温度曲线
        line1, = ax.plot(x,z, color='g', linestyle='dotted', marker='o', label='Temp 2(°C)')
        line2, = ax.plot(x,y, color='m', linestyle='solid', marker='P', label='Temp 1(°C)')
        line3, = ax.plot(x,w, color='r', linestyle='dashdot', marker='D', label='Temp 3(°C)')

        ax.set_xlabel('Timpul')
        ax.set_ylabel('Temperatura(°C)')
        ax.set_title('Temperatura in functie de timp', fontsize = 18)
        ax.legend()
        ax.set_xticks([0,50,99])
        ax.set_ylim((-5,5))

        # 定义下拉菜单的选项和回调函数
        options = ['全部温度', 'Temp 1', 'Temp 2', 'Temp 3']
        # 创建下拉菜单的位置区域,参数依次为:左、下、宽度、高度
        ax_drop = plt.axes([0.1, 0.93, 0.2, 0.03])
        dropdown = Dropdown(ax_drop, '选择显示:', options)

        def update_plot(selected_option):
            # 切换曲线显示状态
            line1.set_visible(selected_option in ['全部温度', 'Temp 2'])
            line2.set_visible(selected_option in ['全部温度', 'Temp 1'])
            line3.set_visible(selected_option in ['全部温度', 'Temp 3'])
            # 刷新画布
            fig.canvas.draw_idle()

        # 绑定下拉菜单的选择事件到回调函数
        dropdown.on_changed(update_plot)

        plt.show()
             
if __name__ == '__main__':
    grafice_stat=grafice_statice()
    grafice_stat.run()
注意事项
  • 下拉菜单的位置可以通过修改plt.axes([0.1, 0.93, 0.2, 0.03])里的四个参数调整,四个值分别对应菜单的左边缘位置、下边缘位置、宽度、高度
  • 如果需要实现按时段筛选的功能,只需要修改update_plot函数内的逻辑,将不同选项对应到x轴的不同切片范围即可
  • 原始代码中类的实例化逻辑缩进错误,已经修复,避免运行时报错

内容的提问来源于stack exchange,提问作者Grg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:36:08