美文网首页
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