ChatGPT不能直接制作图表,但是可以通过多种途径使用ChatGPT制作图表,归纳一下主要有以下两种方法。
(1)无编程方法,可以使用ChatGPT生成Excel电子表格,然后再在Excel中通过内置图表制作功能制作图表。
(2)编程方法,通过ChatGPT生成代码,如使用VBA、Python等语言,从数据中生成图表。
2.5.1
无编程方法使用ChatGPT制作图表
通过无编程方法使用ChatGPT制作图表过程中,使用ChatGPT生成Excel文件,然后在Excel中制作图表,图2-34所示的是在Excel中制作电子产品目录表的步骤。
图2-34 在Excel中制作图表
单击“推荐的图表”按钮,会弹出如图2-35所示的“更改图表类型”对话框,但通常推荐的是柱状图,这里柱状图并不适合本例,那么我们可以选择条状图,如图2-36所示。
▲图2-35 选择图表类型
图2-36 选择条状图
选择条状图后,还可以进行调整图表类型、修改标题等操作,这里不再赘述。最后可以将这个图表导出来,如图2-37所示。
图2-37 最后制作的图表
提示
在Excel中选中要导出的图表,然后使用复制(“Ctrl+C”组合键)和粘贴(“Ctrl+V”组合键)命令将图表粘贴到另一个应用程序中(例如Word、PowerPoint、Paint等)。粘贴后,读者可以对图表进行进一步编辑、保存或导出。
2.5.2
编程方法使用ChatGPT制作图表
如果想要通过编程方法使用ChatGPT制作图表,需要具备一定的编程基础。目前主要可以使用VBA和Python语言实现。
笔者强烈推荐使用Python语言来编写代码,因为Python提供了丰富的图表库,如Matplotlib、Seaborn、Plotly等。这些库提供了丰富的API和组件,可以帮助绘制高质量的图表,并提供多种导出格式,例如PNG、JPEG、SVG等。
相对而言,Python用户要比VBA较多,下面就来介绍一下如何使用ChatGPT生成Python代码来绘制图表。
动手示例
让ChatGPT生成Python代码。
我们向ChatGPT发送如下请求消息,让ChatGPT生成Python代码。
以下是使用Python绘制条形图的示例代码,使用Matplotlib库进行绘图,数据来自“电子产品目录表格10条.xlsx”文件的B列和D列。
ChatGPT的回答如下。
以下是使用Python绘制条形图的示例代码,使用Matplotlib库进行绘图:
把上述Python代码复制,并保存为“.py”文件。
请确保在运行代码之前已经安装了Pandas和Matplotlib库,并将数据保存在名为“电子产品目录表格10条.xlsx”的Excel文件中,还要确保Python文件和“电子产品目录表格10条.xlsx”文件放在同一个目录中。
运行代码后,会生成一个条形图,显示产品名称和对应的价格信息,如图2-38所示。
图2-38 Python语言绘制的条形图
从运行结果可见,中文显示有问题,这是因为Matplotlib库本身对于中文支持不好,可以让ChatGPT修改代码。
向ChatGPT发送如下指令。
代码运行结果,有中文显示乱码,帮我修改代码。
上述指令执行后,ChatGPT的回答如下。
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
#设置中文字体
font=FontProperties(fname='C:/Windows/Fonts/msyh.ttc', size=12)# 指定中文字体文件路径和字号
#读取Excel文件
data = pd.read_excel("电子产品目录表格10条.xlsx")
#提取D列(价格)数据
prices = data[’价格’]
#绘制条形图
plt.figure(figsize=(10, 6))
plt.barh(range(len(prices)),prices)
plt.xlabel(’价格’, fontproperties=font)# 设置x轴标签的字体
plt.ylabel(’索引’, fontproperties=font)# 设置y轴标签的字体
plt.title(’产品价格分布’, fontproperties=font)# 设置标题的字体
#设置Y轴刻度标签为原始的产品名称
plt.yticks(range(len(prices)),data[’产品名称’], fontproperties=font)
#自动调整Y轴标签的位置,避免重叠
plt.tight_layout()
#显示图形
plt.show()
保存代码重新运行,运行结果如图2-39所示。
图2-39 运行结果
从运行结果可见,中文显示正常了。