美文网首页
python批量生成pptx图表-柱状图

python批量生成pptx图表-柱状图

作者: 姬歌 | 来源:发表于2023-07-19 20:28 被阅读0次

最近几天,老板要求给他弄ppt图表。
本来,我excel可以批量操作给他,但他让我搞ppt。
但是呢,我不懂ppt,而且,这个ppt我找了半天,没找到批量生成图表之法。
一次要画300个图呢!!!手动画得一整天,而且重复操作,没几分钟就头晕眼花了。
而且老板还要求每个月画一次。。。
于是,我想找个js的框架来弄,但没找着。于是找python,我对python也是0基础,同事用C`ha^tGP?T生成了需求代码让我试,搞了很多次才能成功运行。运行后得到很VV琐的、错乱的图片,我又现学现卖改了几个小时,完美了!

goods_data.pptx goods_data.xlsx
# 创建Presentation对象
presentation = Presentation()


plt.figure(figsize=(8.5,6))    # 设置生成的图片尺寸大小,单位 inch
# 遍历每行数据,每行代表一个站点
for index, row in excel_data.iterrows():
    # 提取站点ID和站点名
    goods_id = row['ID']
    goods_name = row['名称']

    # 创建幻灯片
    slide_layout = presentation.slide_layouts[5]  # 使用标题和内容布局
    slide = presentation.slides.add_slide(slide_layout)

    # 添加标题
    title = slide.shapes.title
    title.text = f"{goods_name} - {goods_id}"

    # 提取收入和支出数据
    ride_out_data = row.iloc[3:27].tolist()  # 假设数据从第4列到26列
    ride_in_data = row.iloc[28:].tolist()

    # 绘制柱状图。注意,hours是数组!!!,excel有100行就有100个柱状图,每个柱状图有 一个 hours 数组
    hours = range(len(ride_in_data))
    # plt.bar(x, y, width,color, edgecolor, bottom, linewidth, align, tick_label, align)

    # 为了让2个柱子不重叠,前面的柱子设置宽度为负数。
    plt.bar(hours, ride_out_data, width=-0.4, align='edge', label='支出', color='green')
    plt.bar(hours, ride_in_data, width=0.4, align='edge', label='收入', color='orange')
    # plt.xticks(rotation=45, ha='right')
    plt.xticks(hours)   # 显示所有坐标。没有这句,就只显示 0,5,10,15,20...
    plt.xlabel('时段')
    plt.ylabel('假装是马内')
    # plt.title(f"{goods_name} (ID: {goods_id}) 每小时收入和支出订单")
    plt.legend()

    # 将图形保存为临时文件
    temp_file = f'temp_{index}.png'
    plt.savefig(temp_file)
    plt.close()

    # 添加图像到幻灯片
    left = Inches(1)    # Inches()是转换成英寸,1表示一英寸 = 2.54cm
    top = Inches(1.3)
    slide.shapes.add_picture(temp_file, left, top)

    # 删除临时文件
    os.remove(temp_file)

# 保存PPT文件
presentation.save("goods_data.pptx")

首先,你得安装了python环境。
其次,再把那些插件装上,
power shell安装
使用国内镜像会快些
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
逐一安装一下插件

pip install pandas
pip install python-pptx
pip install matplotlib
pip install openpyxl

相关文章

网友评论

      本文标题:python批量生成pptx图表-柱状图

      本文链接:https://www.haomeiwen.com/subject/qxlaudtx.html