• 使用GPT生成python图表


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

    1. import xlrd
    2. data = xlrd.open_workbook('xxxx.xls') # 打开xls文件
    3. table = data.sheet_by_index(0) # 通过索引获取表格
    4. # 初始化奖项字典
    5. awards_dict = {
    6. "一等奖": 0,
    7. "二等奖": 0,
    8. "三等奖": 0
    9. }
    10. # 初始化科目字典
    11. subjects_dict = {}
    12. # 遍历表格的每一行,跳过表头
    13. for i in range(1, table.nrows):
    14. row = table.row_values(i)
    15. # 是xx大学才进行处理
    16. if row[2] == 'xx大学':
    17. # 转为小写,避免首字母不一样带来的误判
    18. subject = row[4].lower()
    19. # 获得的奖项
    20. award = row[5]
    21. # 加入字典
    22. if subject not in subjects_dict:
    23. subjects_dict[subject] = awards_dict.copy()
    24. subjects_dict[subject][award] += 1
    25. # 将结果写入文件
    26. with open("result.txt", "w") as f:
    27. for subject, awards in subjects_dict.items():
    28. f.write(f"{subject}\n")
    29. for award, count in awards.items():
    30. f.write(f"{award}: {count}\n")
    31. f.write("\n")

    matplotlib

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

    1. import xlrd
    2. import matplotlib.pyplot as plt
    3. import numpy as np
    4. plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文字体,不然显示不了中文
    5. data = xlrd.open_workbook('xxxx.xls') # 打开xls文件
    6. table = data.sheet_by_index(0) # 通过索引获取表格
    7. # 初始化奖项字典
    8. awards_dict = {
    9. "一等奖": 0,
    10. "二等奖": 0,
    11. "三等奖": 0
    12. }
    13. # 初始化科目字典
    14. subjects_dict = {}
    15. # 遍历表格的每一行,跳过表头
    16. for i in range(1, table.nrows):
    17. row = table.row_values(i)
    18. if row[2] == 'xx大学':
    19. # 转为小写,避免首字母不一样带来的误判
    20. subject = row[4].lower()
    21. award = row[5]
    22. if subject not in subjects_dict:
    23. subjects_dict[subject] = awards_dict.copy()
    24. subjects_dict[subject][award] += 1
    25. # 直方图展示xx大学在各个类别中的获奖情况
    26. x_labels = subjects_dict.keys()
    27. x = np.arange(len(x_labels)) # 使用numpy的arange生成连续的横坐标值
    28. # 提取各个奖项的数量
    29. y_first = [subjects_dict[subject]['一等奖'] for subject in x_labels]
    30. y_second = [subjects_dict[subject]['二等奖'] for subject in x_labels]
    31. y_third = [subjects_dict[subject]['三等奖'] for subject in x_labels]
    32. # 设置颜色
    33. color_first = 'skyblue'
    34. color_second = 'lightgreen'
    35. color_third = 'lightcoral'
    36. # 绘制直方图
    37. plt.bar(x, y_third, width=0.2, align='center', label='三等奖', color=color_third)
    38. plt.bar(x + 0.2, y_second, width=0.2, align='center', label='二等奖', color=color_second)
    39. plt.bar(x - 0.2, y_first, width=0.2, align='center', label='一等奖', color=color_first)
    40. plt.xlabel('类别')
    41. plt.ylabel('获奖数量')
    42. plt.title('xx大学在各个类别中的获奖情况')
    43. plt.xticks(x, x_labels)
    44. plt.legend()
    45. # 调整图例位置和边框样式
    46. plt.legend(loc='upper right', frameon=False)
    47. # 设置图形背景色
    48. plt.gca().set_facecolor('whitesmoke')
    49. # 调整图形布局
    50. plt.tight_layout()
    51. plt.show()

    pyecharts

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

    1. import xlrd
    2. from pyecharts.charts import Bar
    3. from pyecharts import options as opts
    4. data = xlrd.open_workbook('xxxx.xls') # 打开xls文件
    5. table = data.sheet_by_index(0) # 通过索引获取表格
    6. # 初始化奖项字典
    7. awards_dict = {
    8. "一等奖": 0,
    9. "二等奖": 0,
    10. "三等奖": 0
    11. }
    12. # 初始化科目字典
    13. subjects_dict = {}
    14. # 遍历表格的每一行,跳过表头
    15. for i in range(1, table.nrows):
    16. row = table.row_values(i)
    17. if row[2] == 'xx大学':
    18. # 转为小写,避免首字母不一样带来的误判
    19. subject = row[4].lower()
    20. award = row[5]
    21. if subject not in subjects_dict:
    22. subjects_dict[subject] = awards_dict.copy()
    23. subjects_dict[subject][award] += 1
    24. # 直方图展示xx大学在各个类别中的获奖情况
    25. x_labels = subjects_dict.keys()
    26. # 提取各个奖项的数量
    27. y_first = [subjects_dict[subject]['一等奖'] for subject in x_labels]
    28. y_second = [subjects_dict[subject]['二等奖'] for subject in x_labels]
    29. y_third = [subjects_dict[subject]['三等奖'] for subject in x_labels]
    30. # 使用 Pyecharts 绘制直方图
    31. bar = (
    32. Bar()
    33. .add_xaxis(list(x_labels))
    34. .add_yaxis('一等奖', y_first)
    35. .add_yaxis('二等奖', y_second)
    36. .add_yaxis('三等奖', y_third)
    37. .set_global_opts(
    38. xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),
    39. yaxis_opts=opts.AxisOpts(name='获奖数量'),
    40. title_opts=opts.TitleOpts(title='xx大学在各个类别中的获奖情况'),
    41. legend_opts=opts.LegendOpts(pos_right='5%', pos_top='20%')
    42. )
    43. )
    44. # 生成图表并保存为 HTML 文件
    45. bar.render('bar_chart.html')

  • 相关阅读:
    【优化调度】遗传算法求解工件的并行调度组合优化问题【含Matlab源码 2234期】
    Java之bitCount()方法
    14:00面试,14:06就出来了,问的问题有点变态。。。
    使用cpolar发布群晖NAS博客网站 1(7.X版)
    蒂姆·库克喜提《时代》杂志2022百大影响力人物封面,谷爱凌、杨紫琼也入选
    ClipboardJS——开发学习总结1
    【嵌入式】嵌入式系统稳定性建设:最后的防线
    GaussDB_T 单机版轻量安装
    Git 分支操作&冲突合并
    【元宇宙】NFT ,数字货币的未来
  • 原文地址:https://blog.csdn.net/irisMoon06/article/details/136288959