使用GPT生成python图表

首先,生成一脚本,读取到所需的excel表格

python 复制代码
import xlrd

data = xlrd.open_workbook('xxxx.xls')  # 打开xls文件
table = data.sheet_by_index(0)  # 通过索引获取表格

# 初始化奖项字典
awards_dict = {
    "一等奖": 0,
    "二等奖": 0,
    "三等奖": 0
}

# 初始化科目字典
subjects_dict = {}

# 遍历表格的每一行,跳过表头
for i in range(1, table.nrows):
    row = table.row_values(i)
    # 是xx大学才进行处理
    if row[2] == 'xx大学':
        # 转为小写,避免首字母不一样带来的误判
        subject = row[4].lower()
        # 获得的奖项
        award = row[5]
        # 加入字典
        if subject not in subjects_dict:
            subjects_dict[subject] = awards_dict.copy()
        subjects_dict[subject][award] += 1

# 将结果写入文件
with open("result.txt", "w") as f:
    for subject, awards in subjects_dict.items():
        f.write(f"{subject}\n")
        for award, count in awards.items():
            f.write(f"{award}: {count}\n")
        f.write("\n")

matplotlib

我们要GPT根据上面的代码,用直方图展示xx大学在各个类别中的获奖情况,也就是去对这个文本文件进行数据可视化,于是chatGPT就生成了以下的代码

python 复制代码
import xlrd
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']    # 设置中文字体,不然显示不了中文
data = xlrd.open_workbook('xxxx.xls')  # 打开xls文件
table = data.sheet_by_index(0)  # 通过索引获取表格

# 初始化奖项字典
awards_dict = {
    "一等奖": 0,
    "二等奖": 0,
    "三等奖": 0
}

# 初始化科目字典
subjects_dict = {}

# 遍历表格的每一行,跳过表头
for i in range(1, table.nrows):
    row = table.row_values(i)
    if row[2] == 'xx大学':
        # 转为小写,避免首字母不一样带来的误判
        subject = row[4].lower()
        award = row[5]
        if subject not in subjects_dict:
            subjects_dict[subject] = awards_dict.copy()
        subjects_dict[subject][award] += 1

# 直方图展示xx大学在各个类别中的获奖情况
x_labels = subjects_dict.keys()
x = np.arange(len(x_labels))  # 使用numpy的arange生成连续的横坐标值

# 提取各个奖项的数量
y_first = [subjects_dict[subject]['一等奖'] for subject in x_labels]
y_second = [subjects_dict[subject]['二等奖'] for subject in x_labels]
y_third = [subjects_dict[subject]['三等奖'] for subject in x_labels]

# 设置颜色
color_first = 'skyblue'
color_second = 'lightgreen'
color_third = 'lightcoral'

# 绘制直方图
plt.bar(x, y_third, width=0.2, align='center', label='三等奖', color=color_third)
plt.bar(x + 0.2, y_second, width=0.2, align='center', label='二等奖', color=color_second)
plt.bar(x - 0.2, y_first, width=0.2, align='center', label='一等奖', color=color_first)

plt.xlabel('类别')
plt.ylabel('获奖数量')
plt.title('xx大学在各个类别中的获奖情况')
plt.xticks(x, x_labels)
plt.legend()

# 调整图例位置和边框样式
plt.legend(loc='upper right', frameon=False)

# 设置图形背景色
plt.gca().set_facecolor('whitesmoke')

# 调整图形布局
plt.tight_layout()

plt.show()

pyecharts

pyecharts 是一个用于生成 Echarts 图表的类库。 Echarts 是百度开源的一个数据可视化 JS 库。

python 复制代码
import xlrd
from pyecharts.charts import Bar
from pyecharts import options as opts

data = xlrd.open_workbook('xxxx.xls')  # 打开xls文件
table = data.sheet_by_index(0)  # 通过索引获取表格

# 初始化奖项字典
awards_dict = {
    "一等奖": 0,
    "二等奖": 0,
    "三等奖": 0
}

# 初始化科目字典
subjects_dict = {}

# 遍历表格的每一行,跳过表头
for i in range(1, table.nrows):
    row = table.row_values(i)
    if row[2] == 'xx大学':
        # 转为小写,避免首字母不一样带来的误判
        subject = row[4].lower()
        award = row[5]
        if subject not in subjects_dict:
            subjects_dict[subject] = awards_dict.copy()
        subjects_dict[subject][award] += 1

# 直方图展示xx大学在各个类别中的获奖情况
x_labels = subjects_dict.keys()

# 提取各个奖项的数量
y_first = [subjects_dict[subject]['一等奖'] for subject in x_labels]
y_second = [subjects_dict[subject]['二等奖'] for subject in x_labels]
y_third = [subjects_dict[subject]['三等奖'] for subject in x_labels]

# 使用 Pyecharts 绘制直方图
bar = (
    Bar()
    .add_xaxis(list(x_labels))
    .add_yaxis('一等奖', y_first)
    .add_yaxis('二等奖', y_second)
    .add_yaxis('三等奖', y_third)
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),
        yaxis_opts=opts.AxisOpts(name='获奖数量'),
        title_opts=opts.TitleOpts(title='xx大学在各个类别中的获奖情况'),
        legend_opts=opts.LegendOpts(pos_right='5%', pos_top='20%')
    )
)

# 生成图表并保存为 HTML 文件
bar.render('bar_chart.html')
相关推荐
IT_Octopus13 小时前
【零基础入门 LLM 开发 · Day 13】:LangChain 的对话记忆——Message 对象版
人工智能·python·langchain
哦虎!13 小时前
【JavaEE】网络初识
java
2603_9651481113 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
for_ever_love__14 小时前
MySQL ORDER BY 排序优化:从 Using filesort 到索引有序扫描(含双路 / 单路排序原理)
java·mysql·优化·存储·by·order·filesort
嫂子开门我是_我哥14 小时前
GPT辅助大数据类科研感悟
论文阅读·gpt·论文笔记
我是人✓14 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
欣栀♡14 小时前
JVM 频繁 Full GC 先看日志括号里的 cause,jstat 的 FGC 在 JDK 8 上会骗人
java·jvm
CCblandy15 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
IT研究室15 小时前
最新计算机毕业设计选题推荐-基于spring boot的葡萄酒文化宣传网站-网站-文档指导-Java-springboot
java·spring boot·课程设计
慧都小项15 小时前
MyEclipse 中创建和测试 JAX-RS REST 接口:从项目配置到 REST Explorer
java·restful·myeclipse·jax-rs