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

如何使用matplotlib绘制薪资最高的前5名员工条形图

实现仅展示薪资最高5名员工图表的方案

提供两种实现思路,优先推荐数据库层面处理的方案,性能更好:

方案1:修改SQL查询语句直接获取目标数据(推荐)

直接在查询时完成排序和截断,不需要拉取全量员工数据到本地处理,适合数据量较大的场景。你只需要把原代码中的SQL语句替换为以下内容即可:

SELECT name, salary FROM employee ORDER BY salary DESC LIMIT 5
  • 逻辑说明:ORDER BY salary DESC 会按薪资从高到低排序,LIMIT 5 直接取排序后的前5条结果,后续的绘图逻辑不需要做任何改动。
  • 如果你使用的是SQL Server类数据库,把LIMIT语法替换为SELECT TOP 5 name, salary...即可;Oracle数据库可使用WHERE ROWNUM <=5实现。

修改后完整代码参考:

def graph():
    con = None
    try:
        con = connect("project.db")
        cursor = con.cursor()
        # 仅修改了这一行SQL语句
        sql = "SELECT name, salary FROM employee ORDER BY salary DESC LIMIT 5"
        cursor.execute(sql)
        data = cursor.fetchall()
        name = []
        salary = []
        for i in data:
            name.append(i[0])
            salary.append(i[1])
        plt.bar(name, salary)
        plt.xlabel("Names of Employee")
        plt.ylabel("Salary of Employee")
        plt.title("Top 5 Highest Salaried Employee")
        plt.show()
    except Exception as e:
        showerror("issue ", e)
        con.rollback()
    finally:
        if con is not None:
            con.close()

方案2:Python层面处理全量数据

如果不方便修改SQL查询语句,可以在拉取到全量数据后,在Python代码中完成排序和截取:
只需要在cursor.fetchall()获取数据后,增加排序截取逻辑即可,示例如下:

# 原有获取数据逻辑不变
data = cursor.fetchall()
# 新增:按薪资降序排序,取前5条
data = sorted(data, key=lambda x: x[1], reverse=True)[:5]
# 后续遍历、绘图逻辑不变

如果你需要处理薪资并列的场景(比如第5、6名薪资相同,需要同时展示),可以调整判断逻辑,筛选所有薪资大于等于第5名薪资的员工即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:54:03