• python-pptx 实践 6.1:添加五种基本图形(柱形图、折线图、饼图、条形图、散点图)


    柱形图折线图饼图条形图散点图

    0、import

    import numpy as np
    from pptx import Presentation
    from pptx.util import Inches, Pt
    from pptx.chart.data import ChartData, XyChartData
    from pptx.dml.color import RGBColor
    from pptx.enum.chart import XL_CHART_TYPE, XL_LEGEND_POSITION, XL_TICK_MARK, XL_LABEL_POSITION

    1、柱形图

    # 创建幻灯片-------------------------------------------------
    prs = Presentation()    # 初始化 ppt 文档
    title_only_slide_layout = prs.slide_layouts[5]    # 选择空白幻灯片版式
    slide = prs.slides.add_slide(title_only_slide_layout)    # 添加一页空白幻灯片
    shapes = slide.shapes
    
    shapes.title.text = '简单柱形图'
    
    # 定义图表数据-------------------------------------------------
    x = ['Q1', 'Q2', 'Q3', 'Q4']
    y = [8888, 8899, 7788, 9988]
    
    chart_data = ChartData()
    chart_data.categories = x
    chart_data.add_series(name='销量', values=y)
    
    # 添加图表-------------------------------------------------
    left, top, width, height = Inches(0.5), Inches(1.5), Inches(9), Inches(6)
    graphic_frame = shapes.add_chart(chart_type=XL_CHART_TYPE.COLUMN_CLUSTERED,  # 簇状柱形图
                                     x=left, y=top,    # 图表区的位置
                                     cx=width, cy=height,    # 图表的宽和高
                                     chart_data=chart_data)
    # 保存 ppt 文档
    prs.save('test.pptx')

    ppt 效果:

     2、折线图

    # 创建幻灯片-------------------------------------------------
    prs = Presentation()    # 初始化 ppt 文档
    title_only_slide_layout = prs.slide_layouts[5]    # 选择空白幻灯片版式
    slide = prs.slides.add_slide(title_only_slide_layout)    # 添加一页空白幻灯片
    shapes = slide.shapes
    
    shapes.title.text = '折线图'
    
    # 定义图表数据-------------------------------------------------
    x = ['Q1', 'Q2', 'Q3', 'Q4']
    y = [8888, 8899, 7788, 9988]
    
    chart_data = ChartData()
    chart_data.categories = x
    chart_data.add_series(name='销量', values=y)
    
    # 添加图表-------------------------------------------------
    left, top, width, height = Inches(0.5), Inches(1.5), Inches(9), Inches(6)
    graphic_frame = shapes.add_chart(chart_type=XL_CHART_TYPE.LINE,  # 图表类型
                                     x=left, y=top,    # 图表区的位置
                                     cx=width, cy=height,    # 图表的宽和高
                                     chart_data=chart_data)
    # 保存 ppt 文档
    prs.save('test.pptx')

    ppt 效果:

    3、饼图

    # 创建幻灯片-------------------------------------------------
    prs = Presentation()    # 初始化 ppt 文档
    title_only_slide_layout = prs.slide_layouts[5]    # 选择空白幻灯片版式
    slide = prs.slides.add_slide(title_only_slide_layout)    # 添加一页空白幻灯片
    shapes = slide.shapes
    
    shapes.title.text = '饼图'
    
    # 定义图表数据-------------------------------------------------
    x = ['Q1', 'Q2', 'Q3', 'Q4']
    y = [8888, 8899, 7788, 9988]
    
    chart_data = ChartData()
    chart_data.categories = x
    chart_data.add_series(name='销量', values=y)
    
    # 添加图表-------------------------------------------------
    left, top, width, height = Inches(0.5), Inches(1.5), Inches(9), Inches(6)
    graphic_frame = shapes.add_chart(chart_type=XL_CHART_TYPE.PIE,  # 图表类型
                                     x=left, y=top,    # 图表区的位置
                                     cx=width, cy=height,    # 图表的宽和高
                                     chart_data=chart_data)
    
    chart = graphic_frame.chart
    plot = chart.plots[0]
    # 设置数据标签
    plot.has_data_labels = True    # 显示数据标签
    data_labels = plot.data_labels    # 获取数据标签控制类
    data_labels.show_category_name = True    # 是否显示类别名称
    data_labels.show_value = False    # 是否显示值
    data_labels.show_percentage = True    # 是否显示百分比
    data_labels.number_format = '0.0%'    # 标签的数字格式
    data_labels.position = XL_LABEL_POSITION.INSIDE_END    # 标签位置
    data_labels.font.name = 'Arial'
    data_labels.font.size = Pt(14)
    
    # 设置图表标题
    chart.has_title = True    # 显示标题
    para = chart.chart_title.text_frame.add_paragraph()
    para.text = '销量占比'    # 标题内容
    para.font.size = Pt(16)    # 字体大小
    
    # 保存 ppt 文档
    prs.save('test.pptx')

    ppt 效果:

     4、条形图

    # 创建幻灯片-------------------------------------------------
    prs = Presentation()    # 初始化 ppt 文档
    title_only_slide_layout = prs.slide_layouts[5]    # 选择空白幻灯片版式
    slide = prs.slides.add_slide(title_only_slide_layout)    # 添加一页空白幻灯片
    shapes = slide.shapes
    
    shapes.title.text = '条形图'
    
    # 定义图表数据-------------------------------------------------
    x = ['Q1', 'Q2', 'Q3', 'Q4']
    y = [8888, 8899, 7788, 9988]
    
    chart_data = ChartData()
    chart_data.categories = x
    chart_data.add_series(name='销量', values=y)
    
    # 添加图表-------------------------------------------------
    left, top, width, height = Inches(0.5), Inches(1.5), Inches(9), Inches(6)
    graphic_frame = shapes.add_chart(chart_type=XL_CHART_TYPE.BAR_CLUSTERED,  # 图表类型
                                     x=left, y=top,    # 图表区的位置
                                     cx=width, cy=height,    # 图表的宽和高
                                     chart_data=chart_data)
    
    chart = graphic_frame.chart
    plot = chart.plots[0]
    # 设置数据标签
    plot.has_data_labels = True    # 显示数据标签
    data_labels = plot.data_labels    # 获取数据标签控制类
    data_labels.number_format = '#,#'    # 标签的数字格式
    data_labels.position = XL_LABEL_POSITION.OUTSIDE_END    # 标签位置
    data_labels.font.name = 'Arial'
    data_labels.font.size = Pt(14)
    
    # 保存 ppt 文档
    prs.save('test.pptx')

    ppt 效果:

    5、散点图

    # 创建幻灯片-------------------------------------------------
    prs = Presentation()    # 初始化 ppt 文档
    title_only_slide_layout = prs.slide_layouts[5]    # 选择空白幻灯片版式
    slide = prs.slides.add_slide(title_only_slide_layout)    # 添加一页空白幻灯片
    shapes = slide.shapes
    
    shapes.title.text = '散点图'
    
    # 定义图表数据-------------------------------------------------
    np.random.seed(42)
    
    x = np.random.randn(500)
    np.random.seed(2)
    y = np.random.randn(500)
    
    chart_data = XyChartData()
    # chart_data.categories = x
    series = chart_data.add_series(name='高斯分布样本')
    for px, py in zip(x, y):
        if py > 0:
            series.add_data_point(px, py) 
    
    # 添加图表-------------------------------------------------
    left, top, width, height = Inches(0.5), Inches(1.5), Inches(9), Inches(6)
    graphic_frame = shapes.add_chart(chart_type=XL_CHART_TYPE.XY_SCATTER,  # 图表类型
                                     x=left, y=top,    # 图表区的位置
                                     cx=width, cy=height,    # 图表的宽和高
                                     chart_data=chart_data)
    
    # 保存 ppt 文档
    prs.save('test.pptx')

    ppt 效果:

     

     

     

  • 相关阅读:
    【C#】C#获取文件夹下的所有文件
    6 云计算系列之Nova安装与配置
    5 云计算系列之glance镜像服务安装
    4 云计算系列之Openstack简介与keystone安装
    3大数据挖掘系列之文本相似度匹配
    6 Django系列之关于models的sql语句日常用法总结
    2 python大数据挖掘系列之淘宝商城数据预处理实战
    5 Django系列之通过list_display展示多对多与外键内容在admin-web界面下
    1 python大数据挖掘系列之基础知识入门
    4 django系列之HTML通过form标签来同时提交表单内容与上传文件
  • 原文地址:https://www.cnblogs.com/shanger/p/13123701.html
Copyright © 2020-2023  润新知