ChatGPT中输入提示词:
你是一个Python编程专家,要完成一个Python脚本编写的任务,具体步骤如下:
读取Excel表格:"F:\AI自媒体内容\AI行业数据分析\toolify月榜\toolify2023年-2024年月排行榜汇总数据.xlsx"
用matplotlib绘制一个折线图:
X轴为单元格B1到单元格O1的表头;
Y轴为第1行到第20行的数据,标签为:月访问量;
用每个单元格A2到A21对应的数据绘制折线图;
其中,A2到A6单元格对应的折线为实线,颜色设为不同颜色,互相之间的颜色反差要大;
其他单元格对应的折线为虚线,虚线的形状要都不一样;
图表的标题为"2023年Top20 AI应用近一年的发展趋势";
图例为单元格A2到单元格A21的内容和对应的线条形状;
设置matplotlib默认字体为'SimHei',文件路径为:C:\Windows\Fonts\simhei.ttf
保存图片到文件夹"F:\AI自媒体内容\AI行业数据分析",图片标题为:2023年Top20 AI应用近一年的发展趋势;
显示图片;
注意:每一步都输出信息到屏幕
源代码:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
import os
设置默认字体
font_path = 'C:\\Windows\\Fonts\\simhei.ttf'
font_prop = fm.FontProperties(fname=font_path)
plt.rcParams['font.family'] = font_prop.get_name()
读取Excel表格
file_path = r'F:\AI自媒体内容\AI行业数据分析\toolify月榜\toolify2023年-2024年月排行榜汇总数据.xlsx'
try:
df = pd.read_excel(file_path)
print("Excel数据读取成功")
except Exception as e:
print(f"读取Excel失败: {e}")
exit(1) # 如果读取失败,退出程序
打印数据概览用于检查
print("数据概览:")
print(df.head())
确认表头和数据范围
print("表头(列名):", df.columns.tolist())
print("数据行数:", len(df))
提取数据
try:
x_labels = df.columns[1:15] # B1 到 O1 的表头(去掉第0列的标签名)
y_data = df.iloc[0:20, 1:15] # B1:O20,第1行到第20行的数据
line_labels = df.iloc[0:20, 0] # A2 到 A21 的内容(标签名)
输出以确认
print("月份(x_labels):", x_labels.tolist())
print("前几行数据(y_data):")
print(y_data.head())
print("标签名(line_labels):")
print(line_labels.tolist())
except Exception as e:
print(f"提取数据失败: {e}")
exit(1) # 如果提取失败,退出程序
绘制折线图
plt.figure(figsize=(14, 8))
实线颜色设置
solid_lines_colors = ['b', 'g', 'r', 'c', 'm'] # 蓝色,绿色,红色,青色,洋红色
dashed_lines_styles = ['--', '-.', ':', (0, (5, 10)), (0, (3, 5, 1, 5))] # 定义不同的虚线样式
绘制每条线
try:
for i in range(len(y_data)):
data_line = y_data.iloc[i].values
label_name = line_labels.iloc[i]
if i < 5:
plt.plot(x_labels, data_line, label=label_name, linestyle='-', color=solid_lines_colors[i % len(solid_lines_colors)])
print(f"绘制实线:{label_name},颜色:{solid_lines_colors[i % len(solid_lines_colors)]}")
else:
plt.plot(x_labels, data_line, label=label_name, linestyle=dashed_lines_styles[i % len(dashed_lines_styles)])
print(f"绘制虚线:{label_name},虚线样式:{dashed_lines_styles[i % len(dashed_lines_styles)]}")
except Exception as e:
print(f"绘制折线图失败: {e}")
exit(1) # 如果绘制失败,退出程序
plt.title('2023年Top20 AI应用近一年的发展趋势')
plt.xlabel('月份')
plt.ylabel('月访问量')
plt.legend()
保存图片
output_dir = r'F:\AI自媒体内容\AI行业数据分析'
if not os.path.exists(output_dir):
os.makedirs(output_dir)
output_file = os.path.join(output_dir, '2023年Top20 AI应用近一年的发展趋势.png')
try:
plt.savefig(output_file)
print(f'图片保存到: {output_file}')
except Exception as e:
print(f"保存图片失败: {e}")
exit(1) # 如果保存失败,退出程序
显示图片
plt.show()