Пример #1
1
def create_impala_query_slide(prs,chart_series_title, categories, values):
    # change title and properties
   
    slide = prs.slides.add_slide(prs.slide_layouts[12])

    title = slide.shapes.title
    title.text = chart_series_title
    title.text_frame.paragraphs[0].font.name = "calibri"
    title.text_frame.paragraphs[0].font.size = Pt(28)

    # define chart data ---------------------
    chart_data = ChartData()
    chart_data.categories = categories
    chart_series_title = chart_series_title
    chart_data.add_series(chart_series_title, values)


    # add chart to slide --------------------
    x, y, cx, cy = Inches(2.25), Inches(1.4), Inches(9), Inches(6.0)
    chart =  slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data)
    chart.chart_style = 10
    # sets chart plot to all be the same color (default in PPT is all different colors by category)
    plot = chart.chart.plots[0]
    plot.vary_by_categories = True

    # change axis properties
    category_axis = chart.chart.category_axis
    value_axis = chart.chart.value_axis

    # change axis font properties
    category_axis.tick_labels.font.name = "calibri"
    category_axis.tick_labels.font.size = Pt(11) 
    value_axis.tick_labels.font.name = "calibri"
    value_axis.tick_labels.font.size = Pt(11)

    # change legend properties
    chart.chart.has_legend = True
    chart.chart.legend.include_in_layout = False
    chart.chart.legend.font.name = "calibri"
    chart.chart.legend.font.size = Pt(11)
    return 
Пример #2
0
    def create_ppt(self, data):
        # create presentation with 1 slide ------
        prs = Presentation()
        slide = prs.slides.add_slide(prs.slide_layouts[5])
        zp = []
        zp_value = []
        pro_data = sorted(data, key=lambda result: result[0])
        for item in pro_data:
            zp.append(item[0])
            zp_value.append(item[1])
        chart_data = ChartData()
        chart_data.categories = zp
        chart_data.add_series('Series 1', zp_value)

        # add chart to slide --------------------
        x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
        slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy,
                               chart_data)
        file_name = 'chart-011.pptx'
        file_path = os.path.join(sys.path[0], file_name)
        prs.save(file_path)

        with open(file_path, 'rb') as fp:
            data = fp.read().encode('base64')
        return data
Пример #3
0
 def add_series_fixture(self, request, categories, _SeriesData_,
                        series_data_):
     chart_data = ChartData()
     chart_data.categories = categories
     name = 'Series Foo'
     values = (1.1, 2.2, 3.3)
     return chart_data, name, values, _SeriesData_, series_data_
Пример #4
0
 def xlsx_fixture(self, request, WorkbookWriter_, categories, series_lst_,
                  xlsx_blob_):
     chart_data = ChartData()
     chart_data.categories = categories
     chart_data._series_lst = series_lst_
     return (chart_data, WorkbookWriter_, categories, series_lst_,
             xlsx_blob_)
Пример #5
0
def fill_slide_mean(tsg_ppt, org_all, a, a1, a2, a3, a4, a5, a6, a7, data, box=None):
  common_slide=tsg_ppt.slides[a]
  textbox=common_slide.shapes[0]
  chart_data = ChartData()
  chart_data.categories= [a1,a2,a3,a4,a5,a6,a7]
  chart_data.add_series('01', (data[8], data[7], data[6], data[5], data[4], data[3], data[0]))
  x,y,cx,cy = Inches(0.3), Inches(2.25), Inches(9.38), Inches(4.7)
  graphic_frame = common_slide.shapes.add_chart(XL_CHART_TYPE.BAR_CLUSTERED, x, y, cx, cy, chart_data)
  chart = graphic_frame.chart
  value_axis = chart.value_axis
  value_axis.maximum_scale = 3
  value_axis.minimum_scale = 1
  tick_labels = value_axis.tick_labels
  tick_labels.number_format = '0.00'
  tick_labels.font.size = Pt(12)
  tick_labels.font.type = 'Tele-GroteskEENor'
  plot = chart.plots[0]
  plot.has_data_labels = True
  data_labels = plot.data_labels
  data_labels.font.size = Pt(12)
  data_labels.number_format = '0.00'
  data_labels.font.color.rgb = RGBColor(0, 0, 0)
  data_labels.position = XL_LABEL_POSITION.OUTSIDE_END
  category_axis = chart.category_axis
  category_axis.minor_tick_mark = XL_TICK_MARK.OUTSIDE
  category_axis.tick_labels.font.size = Pt(12)
  bar_plot = chart.plots[0]
  bar_plot.gap_width = 20
  #bar_series = chart.series.bar_series
  #bar_series.fill.solid()
  #bar_series.fill.color.rgb = RGBColor(0, 0, 0)
  

  common_slide=tsg_ppt.slides[a]
  return tsg_ppt
Пример #6
0
def chart(df):
    data = ChartData()
    data.categories = list(df.index)
    for col in df:
        data.add_series(col, df[col].tolist())
    type = XL_CHART_TYPE.COLUMN_CLUSTERED
    return type, data
    def add_account_type_chart(self):
        """
        Gender breakdown pie chart
        :return:
        """
        chart_data = ChartData()
        chart_data.categories = ['Organisation', 'Individual']
        organisation_percent = self.data_row['twitter_audience_organisational']
        individual_percent = self.data_row['twitter_audience_individuals']
        total = organisation_percent+individual_percent
        i_percent = individual_percent/total
        o_percent = organisation_percent/total
        chart_data.add_series('Series 1', (i_percent, o_percent))
        x_coord, y_coord, cx_width, cy_height = Cm(18), Cm(0.44), Cm(7.9), Cm(6.9)
        chart = self.slide.shapes.add_chart(
            XL_CHART_TYPE.PIE, x_coord, y_coord, cx_width, cy_height, chart_data).chart

        chart.has_legend = True
        chart.legend.position = XL_LEGEND_POSITION.BOTTOM
        chart.legend.include_in_layout = False

        chart.plots[0].has_data_labels = True
        data_labels = chart.plots[0].data_labels
        data_labels.number_format = '0%'

        top = Cm(0.01)
        left = Cm(18)
        width = Cm(3)
        height = Cm(1)
        t_box = self.shapes.add_textbox(left, top, width, height)
        t_frame = t_box.text_frame
        t_frame.text = "Account Type Distribution"
    def add_audience_age_chart(self):
        """
        Creates audience age bar chart
        :return:
        """
        chart_data = ChartData()
        chart_data.categories = ['0-9', '10-17', '18-24',
                                 '25-34', '35-44', '45-54',
                                 '55-64', '65+']
        group_1 = self.data_row['0 to 9']
        group_2 = self.data_row['10 to 17']
        group_3 = self.data_row['18-24']
        group_4 = self.data_row['25-34']
        group_5 = self.data_row['35-44']
        group_6 = self.data_row['45-54']
        group_7 = self.data_row['55-64']
        group_8 = self.data_row['65+']
        chart_data.add_series('Series 1', (group_1, group_2,
                                           group_3, group_4,
                                           group_5, group_6,
                                           group_7, group_8))

        x_coord, y_coord, cx_width, cy_height = Cm(10.46), Cm(8.44), Cm(7), Cm(6)
        self.slide.shapes.add_chart(
            XL_CHART_TYPE.COLUMN_CLUSTERED, x_coord, y_coord, cx_width, cy_height, chart_data)

        tx_box = self.shapes.add_textbox(Cm(10.9), Cm(7.8), Cm(10.9), height=1)
        t_frame = tx_box.text_frame
        t_frame.text = "Age Distribution"
    def add_gender_pie_chart(self):
        """
        Gender breakdown pie chart
        :return:
        """
        chart_data = ChartData()
        chart_data.categories = ['Male', 'Female']
        male_percent = self.data_row['twitter_audience_male_percent']
        female_percent = self.data_row['twitter_audience_female_percent']
        total = male_percent+female_percent
        m_percent = male_percent/total
        f_percent = female_percent/total
        chart_data.add_series('Series 1', (m_percent, f_percent))#sort out the % values
        x_coord, y_coord, cx_width, cy_height = Cm(10.46), Cm(0.44), Cm(7), Cm(6)
        chart = self.slide.shapes.add_chart(
            XL_CHART_TYPE.PIE, x_coord, y_coord, cx_width, cy_height, chart_data).chart

        chart.has_legend = True
        chart.legend.position = XL_LEGEND_POSITION.BOTTOM
        chart.legend.include_in_layout = False

        chart.plots[0].has_data_labels = True
        data_labels = chart.plots[0].data_labels
        data_labels.number_format = '0%'

        top = Cm(0.01)
        left = Cm(10.46)
        width = Cm(3)
        height = Cm(1)
        tx_box = self.shapes.add_textbox(left, top, width, height)
        t_frame = tx_box.text_frame
        t_frame.text = "Gender Breakdown"
Пример #10
0
def assign_chart_data(df, config):
    if 'DataFrame' in str(type(df)):
        chart_data = ChartData()
        chart_data.categories = df.index
        percent_format = '0'
        if config['dec places'] > 0:
            percent_format += '.'
            for place in range((config['dec places'])):
                percent_format += '0'
        percent_format += '%'
        config['number format'] = percent_format

        # Move to Data Cleanup
        if config['*FORCE FLOAT'] or config['*MEAN']:
            config['number format'] = '0.0'
        elif config['*FORCE INT']:
            config['number format'] = '0'
        elif config['*FORCE CURRENCY']:
            config['number format'] = '$0.00'

        for col in df.columns:
            chart_data.add_series(col, df[col], config['number format'])

    else:
        chart_data = df
    return chart_data
Пример #11
0
    def CreatePptNum(self,s,num):
        i = 0
        z = 0
        # 创建幻灯片 ------
        prs = Presentation()

        while i < s:
            slide = prs.slides.add_slide(prs.slide_layouts[5])
            # 定义图表数据 ---------------------
            chart_data = ChartData()
            chart_data.categories = ['East', 'West', 'Midwest']
            chart_data.add_series('Series 1', (19.2, 21.4, 16.7))
         
            # 将图表添加到幻灯片 --------------------
            x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
            slide.shapes.add_chart(
                XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
            )
            i = i + 1

        title_slide_layout1 = prs.slide_layouts[0]
        slide1 = prs.slides.add_slide(title_slide_layout1)
         
        title1 = slide1.shapes.title
        subtitle1 = slide1.placeholders[1]
         
        # 设置标题和副标题
        title1.text = "我是关键字"
        salt = ''.join(random.sample(string.ascii_letters + string.digits, 16))
        subtitle1.text = "王宝强" + salt

        prs.save('Result\\dlp%s.pptx' % num)

        return True
Пример #12
0
def prt_slide_graph_p2_1():
    global slide
    slide = prs.slides.add_slide(prs.slide_layouts[6])

    title_para('prt_slide_graph_p2_1', '년  월 시스템 ')
    text_para_1st('월 평균(영업일기준) CPU/MEM 사용율%')

    # 가로 그래프 1개 좌표
    x1, y1, cx1, cy1 = Cm(1.0), Cm(2.5), Cm(11.5), Cm(7.8)
    # x2, y2, cx2, cy2 = Cm(13.0), Cm(2.5), Cm(11.5), Cm(7.8)
    # x3, y3, cx3, cy3 = Cm(1.0), Cm(10.5), Cm(11.5), Cm(7.8)
    # x4, y4, cx4, cy4 = Cm(13.0), Cm(10.5), Cm(11.5), Cm(7.8)


    # 그래프
    on_label = 0;on_mark = 1
    chart_data1 = ChartData()
    # chart_data2 = ChartData()
    # chart_data3 = ChartData()
    # chart_data4 = ChartData()

    # chart_data1.categories = deco_data(data1['data'])
    chart_data1.categories =  ['A', 'B', 'C', 'D']
    # chart_data1.categories = chart_data2.categories = chart_data3.categories = chart_data4.categories = ['A', 'B', 'C', 'D']

    chart_data1.add_series("CH01", (5,3,7), 2)
    # chart_data2.add_series("CH02", (5,3,7), 2)
    # chart_data3.add_series("CH03", (5,3,7), 2)
    # chart_data4.add_series("CH04", (5,3,7), 2)
    add_chart_in_ppt(x1, y1, cx1, cy1, chart_data1)
Пример #13
0
 def add_series_fixture(
         self, request, categories, _SeriesData_, series_data_):
     chart_data = ChartData()
     chart_data.categories = categories
     name = 'Series Foo'
     values = (1.1, 2.2, 3.3)
     return chart_data, name, values, _SeriesData_, series_data_
Пример #14
0
def _generate_conceptnet_data(presentation_context, title_generator,
                              conceptnet_function):
    seed = presentation_context["seed"]
    title = title_generator(presentation_context)

    presentation_context["chart_title"] = title

    conceptnet_relations = conceptnet_function(seed)

    if conceptnet_relations:
        conceptnet_relations = conceptnet.remove_duplicates(
            conceptnet_relations)
        conceptnet_relations = conceptnet.remove_containing(
            conceptnet_relations, seed)
        random.shuffle(conceptnet_relations)

        conceptnet_relations = conceptnet_relations[0:random.randint(2, 5)]
        categories = [location[1] for location in conceptnet_relations]
        values = [float(location[0])**2 for location in conceptnet_relations]

        if len(categories) == 0:
            return None
        series_data = normalise_data(values)

        chart_data = ChartData()
        chart_data.categories = categories
        chart_data.add_series("", series_data)
        return title, chart_data
Пример #15
0
def when_I_add_a_chart_with_categories_and_series(context, kind, cats, sers):
    chart_type = {
        'Area':                XL_CHART_TYPE.AREA,
        '100% Stacked Area':   XL_CHART_TYPE.AREA_STACKED_100,
        'Stacked Area':        XL_CHART_TYPE.AREA_STACKED,
        'Clustered Bar':       XL_CHART_TYPE.BAR_CLUSTERED,
        '100% Stacked Bar':    XL_CHART_TYPE.BAR_STACKED_100,
        'Stacked Bar':         XL_CHART_TYPE.BAR_STACKED,
        'Clustered Column':    XL_CHART_TYPE.COLUMN_CLUSTERED,
        '100% Stacked Column': XL_CHART_TYPE.COLUMN_STACKED_100,
        'Stacked Column':      XL_CHART_TYPE.COLUMN_STACKED,
        'Line':                XL_CHART_TYPE.LINE,
        'Pie':                 XL_CHART_TYPE.PIE,
    }[kind]
    category_count, series_count = int(cats), int(sers)
    category_source = ('Foo', 'Bar', 'Baz', 'Boo', 'Far', 'Faz')
    series_value_source = count(1.1, 1.1)

    chart_data = ChartData()
    chart_data.categories = category_source[:category_count]
    for idx in range(series_count):
        series_title = 'Series %d' % (idx+1)
        series_values = tuple(islice(series_value_source, category_count))
        chart_data.add_series(series_title, series_values)

    context.chart = context.slide.shapes.add_chart(
        chart_type, Inches(1), Inches(1), Inches(8), Inches(5), chart_data
    ).chart
Пример #16
0
def when_I_call_placeholder_insert_chart(context):
    chart_data = ChartData()
    chart_data.categories = ['Yes', 'No']
    chart_data.add_series('Series 1', (42, 24))
    placeholder = context.shape
    context.placeholder = placeholder.insert_chart(XL_CHART_TYPE.PIE,
                                                   chart_data)
Пример #17
0
def when_I_call_placeholder_insert_chart(context):
    chart_data = ChartData()
    chart_data.categories = ['Yes', 'No']
    chart_data.add_series('Series 1', (42, 24))
    placeholder = context.shape
    context.placeholder = placeholder.insert_chart(
        XL_CHART_TYPE.PIE, chart_data
    )
Пример #18
0
 def xml_bytes_fixture(self, chart_type_, ChartXmlWriter_, series_lst_):
     chart_data = ChartData()
     chart_data._series_lst = series_lst_
     expected_bytes = 'ƒøØßår'.encode('utf-8')
     return (
         chart_data, chart_type_, ChartXmlWriter_, expected_bytes,
         series_lst_
     )
Пример #19
0
def drawbar(shapes,
            df,
            title,
            left=Inches(0.5),
            top=Inches(1),
            width=Inches(6),
            height=Inches(6.5),
            sorted=True,
            fontsize=18):
    # values = df.values.tolist()
    columns = df.columns.values.tolist()  # 列名
    df = df.dropna()
    if sorted:  # 默认对数值排序
        sort_item = columns[1]
        df = df.sort_values(by=sort_item)
    df_labels = df.iloc[:, 0]  # 部门

    df_values = df.iloc[:, 1:]  # 数值
    labels = df_labels.values.tolist()
    chart_data = ChartData()
    for i in range(df_values.shape[1]):
        values = df_values.iloc[:, i].values.tolist()
        column = columns[i + 1]
        chart_data.add_series(column, values)
    chart_data.categories = labels
    # x, y, cx, cy = Inches(0.5), Inches(1), Inches(6), Inches(6.5)
    graphic_frame = shapes.add_chart(XL_CHART_TYPE.BAR_CLUSTERED, left, top,
                                     width, height, chart_data)
    graphic_frame.chart.has_title = True
    graphic_frame.chart.chart_title.text_frame.clear()
    new_title = graphic_frame.chart.chart_title.text_frame.add_paragraph()
    new_title.text = title
    new_title.font.size = Pt(24)
    new_title.font.bold = True
    series = graphic_frame.chart.series[0]
    series.invert_if_negative = False  # 没什么卵用
    for i in range(df_values.shape[0]):
        point = series.points[i]
        fill = point.format.fill
        fill.patterned()  # 此处不可用solid(),否则负值会被取反色
        fill.fore_color.rgb = RGBColor(210, 71, 38)  # orange
        fill.back_color.rgb = RGBColor(210, 71, 38)  # 背景色也被设置为橙色,背景色就是负值颜色
    plot = graphic_frame.chart.plots[0]  # 取图表中第一个plot
    plot.has_data_labels = True  # 是否显示数据标签
    data_labels = plot.data_labels  # 数据标签控制类
    data_labels.position = XL_DATA_LABEL_POSITION.OUTSIDE_END  # 字体位置
    data_labels.font.bold = True
    data_labels.number_format = '0.0%'
    data_labels.font.size = Pt(fontsize)
    category_axis = graphic_frame.chart.category_axis  # 纵轴标签控制类
    category_axis.tick_labels.font.bold = True
    category_axis.tick_label_position = XL_TICK_LABEL_POSITION.LOW
    category_axis.has_major_gridlines = False
    value_axis = graphic_frame.chart.value_axis  # 横轴值坐标标签控制类
    value_axis.tick_labels.number_format = '0%'
    value_axis.has_minor_gridlines = False
    value_axis.has_major_gridlines = False
    return graphic_frame
Пример #20
0
def fill_slide_common(tsg_ppt, org_all, a, c1, c2, c3, c4, c5, data, box=None):
    common_slide = tsg_ppt.slides[a]
    mittelwert = common_slide.placeholders[18]
    text_frame = mittelwert.text_frame
    text_frame.clear()
    p = text_frame.paragraphs[0]
    run = p.add_run()
    run.text = box
    font = run.font
    font.size = Pt(10.5)
    font.color.rgb = RGBColor(226, 0, 116)

    chart_data = ChartData()
    #chart_data.categories= [c1,c2,c3,c4,c5]
    chart_data.categories = ['asdf']
    #chart_data.add_series('01', (data[0], data[1], data[2], data[3], data[4]))
    a = 0.3
    b = 0.7
    #chart_data.add_series('1',(a,b))
    chart_data.add_series('1', (a, b))
    chart_data.add_series('2', (b, a))
    x, y, cx, cy = Inches(0.3), Inches(2.25), Inches(9.38), Inches(4.7)
    graphic_frame = common_slide.shapes.add_chart(
        XL_CHART_TYPE.BAR_STACKED_100, x, y, cx, cy, chart_data)
    chart = graphic_frame.chart
    value_axis = chart.value_axis
    chart.has_legend = True
    chart.plots[0].has_data_labels = True
    data_labels = chart.plots[0].data_labels
    data_labels.number_format = '0%'
    #data_labels.position = XL_LABEL_POSITION.OUTSIDE_END
    chart.legend.position = XL_LEGEND_POSITION.CUSTOM

    #value_axis.maximum_scale = 100.0
    #tick_labels = value_axis.tick_labels
    #tick_labels.number_format = '0"%"'
    #tick_labels.font.size = Pt(12)
    #tick_labels.font.type = 'Tele-GroteskEENor'
    #plot = chart.plots[0]
    #plot.has_data_labels = True
    #data_labels = plot.data_labels
    #data_labels.font.size = Pt(12)
    #data_labels.number_format = '0"%"'
    #data_labels.font.color.rgb = RGBColor(0, 0, 0)
    #data_labels.position = XL_LABEL_POSITION.OUTSIDE_END
    #category_axis = chart.category_axis
    #category_axis.minor_tick_mark = XL_TICK_MARK.OUTSIDE
    #category_axis.tick_labels.font.size = Pt(12)
    #bar_plot = chart.plots[0]
    #bar_plot.gap_width = 20
    #bar_plot.overlap = -20
    #print data
    #if (box):
    #print box

    chart.replace_data(chart_data)
    return tsg_ppt
Пример #21
0
def drawbar2(shapes,
             df,
             title,
             left=Inches(0.5),
             top=Inches(1),
             width=Inches(7),
             height=Inches(6.5),
             sorted=True,
             fontsize=18,
             chart_type=XL_CHART_TYPE.COLUMN_CLUSTERED):
    # values = df.values.tolist()
    columns = df.columns.values.tolist()  # 列名
    df = df.dropna()
    if sorted:  # 默认对数值排序
        sort_item = columns[1]
        df = df.sort_values(by=sort_item)
    df_labels = df.iloc[:, 0]  # 部门
    df_values = df.iloc[:, 1:]  # 数值
    labels = df_labels.values.tolist()
    chart_data = ChartData()
    for i in range(df_values.shape[1]):
        values = df_values.iloc[:, i].values.tolist()
        column = columns[i + 1]
        chart_data.add_series(column, values)
    chart_data.categories = labels
    # x, y, cx, cy = Inches(0.5), Inches(1), Inches(6), Inches(6.5)
    graphic_frame = shapes.add_chart(chart_type, left, top, width, height,
                                     chart_data)
    graphic_frame.chart.has_legend = True
    graphic_frame.chart.legend.position = XL_LEGEND_POSITION.CORNER  # 图例在右上角
    graphic_frame.chart.has_title = True
    graphic_frame.chart.chart_title.text_frame.clear()
    # graphic_frame.chart.has_table = True
    new_title = graphic_frame.chart.chart_title.text_frame.add_paragraph()
    new_title.text = title
    new_title.font.size = Pt(24)
    new_title.font.bold = True
    series = graphic_frame.chart.series[0]
    series.invert_if_negative = False  # 没什么卵用
    plot = graphic_frame.chart.plots[0]  # 取图表中第一个plot
    plot.has_data_labels = True  # 是否显示数据标签
    data_labels = plot.data_labels  # 数据标签控制类
    data_labels.position = XL_DATA_LABEL_POSITION.OUTSIDE_END  # 字体位置
    data_labels.font.bold = True
    if True in (df_values[df_values < 1].count() / df_values.count() >
                0.9).tolist():
        data_labels.number_format = '0.0%'
    data_labels.font.size = Pt(fontsize)
    category_axis = graphic_frame.chart.category_axis  # 纵轴标签控制类
    category_axis.tick_labels.font.bold = True
    category_axis.tick_label_position = XL_TICK_LABEL_POSITION.LOW
    category_axis.has_major_gridlines = False
    value_axis = graphic_frame.chart.value_axis  # 横轴值坐标标签控制类
    # value_axis.tick_labels.number_format = '0%'
    value_axis.has_minor_gridlines = False
    value_axis.has_major_gridlines = False
    return graphic_frame
Пример #22
0
 def xlsx_fixture(
         self, request, WorkbookWriter_, categories, series_lst_,
         xlsx_blob_):
     chart_data = ChartData()
     chart_data.categories = categories
     chart_data._series_lst = series_lst_
     return (
         chart_data, WorkbookWriter_, categories, series_lst_, xlsx_blob_
     )
Пример #23
0
def create_chart(chart_name, slide_name, placeholder_index, categories, series,
                 name_of_attribute):
    chart_data = ChartData()
    my_tuple = list(zip(categories, series))
    my_tuple.sort(key=lambda elem: elem[1])
    new_cat = [i[0] for i in my_tuple]
    new_series = [i[1] for i in my_tuple]
    if name_of_attribute == "Food taste and flavor":
        index = new_series.index(
            kpis[slugify(Chain)]["attributes"]["Food taste and flavor"])
    elif name_of_attribute == "Overall Rating":
        index = new_series.index(
            kpis[slugify(Chain)]["attributes"]["Overall Rating"])
    elif name_of_attribute == "Food quality":
        index = new_series.index(
            kpis[slugify(Chain)]["attributes"]["Food quality"])
    elif name_of_attribute == "Food quality takeout":
        index = new_series.index(
            kpis[slugify(Chain)]["attributes"]["Food quality takeout"])
    elif name_of_attribute == "Interior cleanliness":
        index = new_series.index(
            kpis[slugify(Chain)]["attributes"]["Interior cleanliness"])
    elif name_of_attribute == "Kitchen/food prep area cleanliness":
        index = new_series.index(kpis[slugify(Chain)]["attributes"]
                                 ["Kitchen/food prep area cleanliness"])
    elif name_of_attribute == "Order accuracy":
        index = new_series.index(
            kpis[slugify(Chain)]["attributes"]["Order accuracy"])
    else:
        index = new_series.index(kpis[slugify(Chain)]["attributes"]
                                 ["Dishware/glassware/silverware cleanliness"])

    # index = [name_of_attribute for name_of_attribute in new_series.index(kpis[slugify(Chain)]["attributes"][name_of_attribute]) if name_of_attribute == name_of_attribute]

    chart_data.categories = (new_cat)
    chart_data.add_series('Series1', (new_series))
    chart_name = slide_name.placeholders[placeholder_index].insert_chart(
        XL_CHART_TYPE.BAR_CLUSTERED, chart_data)
    chart_name.chart.plots[0].series[0].format.fill.solid()
    chart_name.chart.plots[0].series[0].format.fill.fore_color.rgb = RGBColor(
        192, 192, 192)
    chart_name.chart.plots[0].has_data_labels = True
    chart_name.chart.value_axis.has_major_gridlines = False
    chart_name.chart.value_axis.visible = False
    chart_name.chart.plots[0].data_labels.font.size = Pt(14)
    chart_name.chart.plots[0].data_labels.number_format = '#,##0.0%'
    chart_name.chart.plots[0].chart.value_axis.maximum_scale = .95
    chart_name.chart_part.chart.category_axis.major_tick_mark = XL_TICK_MARK.NONE
    point = chart_name.chart.plots[0].series[0].points[index]
    fill = point.format.fill
    fill.solid()
    fill.fore_color.rgb = RGBColor(225, 34, 34)
    chart_name.chart.plots[0].chart.category_axis.format.line.fill.solid()
    chart_name.chart.plots[
        0].chart.category_axis.format.line.fill.fore_color.rgb = RGBColor(
            255, 255, 255)
Пример #24
0
def fill_slide_not_common_2(tsg_ppt,
                            org_all,
                            a,
                            c1,
                            c2,
                            c3,
                            c4,
                            c5,
                            data,
                            box=None):
    fill_slide_title(tsg_ppt, a, org_all)
    not_common_slide = tsg_ppt.slides[a]
    mittelwert = not_common_slide.placeholders[18]
    text_frame = mittelwert.text_frame
    text_frame.clear()
    p = text_frame.paragraphs[0]
    run = p.add_run()
    run.text = box
    font = run.font
    font.size = Pt(10.5)
    font.color.rgb = RGBColor(226, 0, 116)

    chart_data = ChartData()
    chart_data.categories = [c1, c2, c3, c4, c5]
    chart_data.add_series('01', (data[0], data[1], data[2], data[3], data[4]))
    x, y, cx, cy = Inches(0.3), Inches(2.25), Inches(9.38), Inches(4.7)
    graphic_frame = not_common_slide.shapes.add_chart(
        XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data)
    chart = graphic_frame.chart
    value_axis = chart.value_axis
    value_axis.maximum_scale = 100.0
    tick_labels = value_axis.tick_labels
    tick_labels.number_format = '0"%"'
    tick_labels.font.size = Pt(12)
    tick_labels.font.type = 'Tele-GroteskEENor'
    plot = chart.plots[0]
    plot.has_data_labels = True
    data_labels = plot.data_labels
    data_labels.font.size = Pt(12)
    data_labels.number_format = '0"%"'
    data_labels.font.color.rgb = RGBColor(0, 0, 0)
    data_labels.position = XL_LABEL_POSITION.OUTSIDE_END
    category_axis = chart.category_axis
    category_axis.minor_tick_mark = XL_TICK_MARK.OUTSIDE
    category_axis.tick_labels.font.size = Pt(12)
    bar_plot = chart.plots[0]
    bar_plot.gap_width = 20
    bar_plot.overlap = -20
    #print data
    #if (box):
    #print box

    chart.replace_data(chart_data)
    return tsg_ppt
def replace_chart_data(shape, df):

    chart_data = ChartData()
    chart_data.categories = df.index

    for col_idx, col in enumerate(df.columns):
        chart_data.add_series(col, (df.iloc[:, col_idx].values))

    shape.chart.replace_data(chart_data)

    return shape
Пример #26
0
 def chart(self, df, placehold):
     data = ChartData()
     # 横轴名
     data.categories = list(df.index)
     # 系列名,数据
     for col_name in df:
         array = df[col_name].tolist()
         data.add_series(col_name, array)
     # 图表类型
     type = XL_CHART_TYPE.COLUMN_CLUSTERED
     # 指定placehold中插入图表
     placehold.insert_chart(type, data)
Пример #27
0
    def chart(self, df, chart_class='bar', left=2, top=25, width=95, height=60):
        # 获取第一例的列名,作为categories
        categories = df.iloc[:, 0].tolist()
        # 获取第二列滞后的数据
        series_name = df.iloc[:, 1:]
        # 将第二列后的数据,按照列转换成系列
        series = series_name.to_dict(orient='series')
        # define chart data ---------------------
        chart_data = ChartData()
        chart_data.categories = categories
        for key in series:
            chart_data.add_series(key, series[key].tolist())

        left = int(0.01 * left * self.prs.slide_width)
        top = int(0.01 * top * self.prs.slide_height)
        width = int(0.01 * width * self.prs.slide_width)
        height = int(0.01 * height * self.prs.slide_height)
        if chart_class == 'bar':
            graphic_frame = self.slide.shapes.add_chart(
                XL_CHART_TYPE.COLUMN_CLUSTERED, left, top, width, height, chart_data
            )
        elif chart_class == 'pie':
            graphic_frame = self.slide.shapes.add_chart(
                XL_CHART_TYPE.PIE, left, top, width, height, chart_data
            )
        elif chart_class == 'line':
            graphic_frame = self.slide.shapes.add_chart(
                XL_CHART_TYPE.LINE, left, top, width, height, chart_data
            )

        chart = graphic_frame.chart
        if chart_class == 'line':
            chart.series[0].smooth = False
        else:
            plot = chart.plots[0]
            plot.has_data_labels = True
            data_labels = plot.data_labels

            data_labels.font.size = Pt(13)
            data_labels.font.color.rgb = RGBColor(0x0A, 0x42, 0x80)
            data_labels.position = XL_LABEL_POSITION.OUTSIDE_END

        if chart_class == 'pie':
            data_labels.number_format = '0%'

        if chart_class in ['bar', 'line'] and df.shape[1] > 2:
            chart.has_legend = True
            chart.legend.position = XL_LEGEND_POSITION.RIGHT
            chart.legend.include_in_layout = False
        else:
            chart.has_legend = True
            chart.legend.position = XL_LEGEND_POSITION.BOTTOM
            chart.legend.include_in_layout = False
Пример #28
0
def when_I_replace_its_data_with_categories_and_series(context, cats, sers):
    category_count, series_count = int(cats), int(sers)
    category_source = ('Foo', 'Bar', 'Baz', 'Boo', 'Far', 'Faz')
    series_value_source = count(1.1, 1.1)

    chart_data = ChartData()
    chart_data.categories = category_source[:category_count]
    for idx in range(series_count):
        series_title = 'New Series %d' % (idx + 1)
        series_values = tuple(islice(series_value_source, category_count))
        chart_data.add_series(series_title, series_values)

    context.chart.replace_data(chart_data)
Пример #29
0
def when_I_replace_its_data_with_categories_and_series(context, cats, sers):
    category_count, series_count = int(cats), int(sers)
    category_source = ("Foo", "Bar", "Baz", "Boo", "Far", "Faz")
    series_value_source = count(1.1, 1.1)

    chart_data = ChartData()
    chart_data.categories = category_source[:category_count]
    for idx in range(series_count):
        series_title = "New Series %d" % (idx + 1)
        series_values = tuple(islice(series_value_source, category_count))
        chart_data.add_series(series_title, series_values)

    context.chart.replace_data(chart_data)
Пример #30
0
def add_happiness_chart(slide):
    chart_data = ChartData()
    chart_data.categories = ['Q1', 'Q2', f'Hiring John', 'Q3', 'Q4']
    chart_data.add_series('Happiness', (30.0, 23.0, 17.2, 69.69, 120.00))
    x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
    chart = slide.shapes.add_chart(XL_CHART_TYPE.LINE, x, y, cx, cy,
                                   chart_data).chart
    chart.has_legend = False
    chart.series[0].smooth = True
    chart.value_axis.visible = False
    chart.category_axis.axis_title.text_frame.paragraphs[0].font.size = Pt(11)
    chart.chart_title.text_frame.paragraphs[0].font.size = Pt(11)
    chart.value_axis.axis_title.text_frame.paragraphs[0].font.size = Pt(11)
Пример #31
0
def _build_chart_data(csv):
    chart_data = ChartData()
    categories = [_nan_to_none(x) or '' for x in csv.iloc[:, 0].values]
    log.debug(u" Setting categories with values:%s" % categories)
    chart_data.categories = categories

    for i in range(1, csv.columns.size):
        col = csv.iloc[:, i]
        values = [_nan_to_none(x) for x in col.values]
        name = _to_unicode(col.name)
        log.debug(u" Adding series:%s values:%s" % (name, values))
        chart_data.add_series(name, values)
    return chart_data
Пример #32
0
    def add_bar_chat(self, categories):
        chart_layout = self.presentation.slide_layouts[SLD_LAYOUT_CHART]
        slide = self.presentation.slides.add_slide(chart_layout)

        self.add_title(slide)

        chart_data = ChartData()
        chart_data.categories = categories
        values = random_values(len(categories))
        chart_data.add_series('Serie', values)

        x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
        slide.shapes.add_chart(
            XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data)
Пример #33
0
def make_series_data_seq(cat_count, ser_count):
    """
    Return a sequence of |_SeriesData| objects populated with *cat_count*
    category names and *ser_count* sequences of point values. Values are
    auto-generated.
    """
    category_names = ('Foo', 'Bar', 'Baz', 'Boo', 'Far', 'Faz')
    point_values = count(1.1, 1.1)
    chart_data = ChartData()
    chart_data.categories = category_names[:cat_count]
    for idx in range(ser_count):
        series_title = 'Series %d' % (idx + 1)
        series_values = tuple(islice(point_values, cat_count))
        chart_data.add_series(series_title, series_values)
    return chart_data.series
Пример #34
0
def make_series_data_seq(cat_count, ser_count):
    """
    Return a sequence of |_SeriesData| objects populated with *cat_count*
    category names and *ser_count* sequences of point values. Values are
    auto-generated.
    """
    category_names = ('Foo', 'Bar', 'Baz', 'Boo', 'Far', 'Faz')
    point_values = count(1.1, 1.1)
    chart_data = ChartData()
    chart_data.categories = category_names[:cat_count]
    for idx in range(ser_count):
        series_title = 'Series %d' % (idx+1)
        series_values = tuple(islice(point_values, cat_count))
        series_values = [round(x*10)/10.0 for x in series_values]
        chart_data.add_series(series_title, series_values)
    return chart_data.series
Пример #35
0
    def add_bar_chart(self,
                      slide,
                      x,
                      y,
                      cx,
                      cy,
                      categories,
                      *series,
                      unit='cm'):
        '''
        Add bar chart into given slide.

        Args:
            slide: slide Given slide
            x: x aixs location of chart
            y: float y aixs location of chart
            cx: float Total width of chart
            cy: float Total height of chart
            categories: list List of bar names
            series: list List of data series, one of each has 2 element: 'series name', 'data list'
                    eg: *series = *[('Series 1', [1.3, 3.6]),
                                    ('Series 2', [-0.5, 1.6])]
            unit: str Must 'cm' or 'inches'
        
        Return:
            chart: added chart
        '''
        x, y, cx, cy = self._convert_nums(x, y, cx, cy, unit=unit)
        chart_data = self._add_categories_series(ChartData(), categories,
                                                 *series)
        graphic_frame = slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED,
                                               x, y, cx, cy, chart_data)
        return graphic_frame.chart
Пример #36
0
def generate_yes_no_large_funny_answer_chart_data(presentation_context):
    title = yes_no_question_generator(presentation_context)

    presentation_context["chart_title"] = title

    categories = [
        'Yes', 'No',
        funny_yes_no_answer_generator(presentation_context)
    ]
    series_data = normalise_data(
        create_equal_data_with_outlier_end(len(categories), .7, 1, 2.5, 1, 20))

    chart_data = ChartData()
    chart_data.categories = categories
    chart_data.add_series("", series_data)
    return title, chart_data
Пример #37
0
    def getDataFromColumn(self, fileRef):
        book = xlrd.open_workbook(fileRef)
        dataSheet = book.sheet_by_name(
            AGGREGATE_SHEET_NAME)  #throw error if nothing is returned?
        self.chart_data = ChartData()
        rawData = []
        self.categories = []
        self.categoryCount = []
        self.numberOfDataPoints = dataSheet.nrows
        colNum = self.colNum

        for i in range(dataSheet.nrows - 1):
            rawData.append(dataSheet.cell_value(rowx=i + 1, colx=colNum))

        unicodeCategories = list(set(rawData))
        self.categories = list(set(rawData))

        for i in range(len(self.categories)):
            self.categories[i] = str(self.categories[i]).upper()

        for i in range(len(unicodeCategories)):
            self.categoryCount.append(
                sum(dataEntry == unicodeCategories[i]
                    for dataEntry in rawData))

        print "categories : "
        print self.categories
        print "tuple(categorCount) : "
        print tuple(self.categoryCount)
Пример #38
0
def create_pie_chart(details, base=None):

    if len(details["categories"]) != len(details["percentages"]):
        return False, "Couldn't create the pie chart as the number of categories and percentage values are not equal"

    # prs = Presentation()
    # slide = prs.slides.add_slide(prs.slide_layouts[5])

    try:
        prs = Presentation('./Final - Presentation.pptx')
    except exc.PackageNotFoundError as err:
        # print(f'No presentation file: {err}')
        prs = Presentation(base)
    slide = prs.slides.add_slide(prs.slide_layouts[10])

    chart_data = CategoryChartData()

    x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)

    chart_data = ChartData()
    # chart_data.categories = ['West', 'East', 'North', 'South', 'Other']
    # chart_data.add_series('Series 1', (0.135, 0.324, 0.180, 0.235, 0.126))

    try:
        percent_floats = [float(i) for i in details["percentages"]]
    except ValueError as err:
        print(f'Cannot extract number from percentages: {err}')
        return False, "Couldn't create the pie chart due to invalid percentage values"

    if sum(percent_floats) != 100.0 and sum(percent_floats) != 1.0:
        return False, "Couldn't create the pie chart as percentages don't add up to 100"

    if sum(percent_floats) == 100.0:
        temp = percent_floats
        percent_floats = [i / 100.0 for i in temp]

    chart_data.add_series('Series 1', percent_floats)

    chart_data.categories = details["categories"]

    chart = slide.shapes.add_chart(XL_CHART_TYPE.PIE, x, y, cx, cy,
                                   chart_data).chart

    chart.has_legend = True
    chart.legend.position = XL_LEGEND_POSITION.BOTTOM
    chart.legend.include_in_layout = False

    chart.plots[0].has_data_labels = True
    data_labels = chart.plots[0].data_labels
    data_labels.number_format = '0%'
    data_labels.position = XL_DATA_LABEL_POSITION.OUTSIDE_END

    if 'title' in details:
        slide.placeholders[0].text = details['title'].title()
        # chart.chart_title.text_frame.text = details['title'].title()

    prs.save('Final - Presentation.pptx')

    return True, "Created the Pie Chart"
Пример #39
0
def df_to_chartdata(df,datatype,number_format=None):
    '''
    根据给定的图表数据类型生成相应的数据
    Chartdata:一般的数据
    XyChartData: 散点图数据
    BubbleChartData:气泡图数据
    '''
    if isinstance(df,pd.Series):
        df=pd.DataFrame(df)
    df.fillna(0,inplace=True)
    datatype=datatype.lower()
    if datatype == 'chartdata':
        chart_data = ChartData()
        chart_data.categories = ['%s'%(c) for c in list(df.index)]
        for col_name in df.columns:
            chart_data.add_series('%s'%(col_name),list(df[col_name]),number_format)
        return chart_data
    if datatype == 'xychartdata':
        chart_data=XyChartData()
        if not isinstance(df,list):
            df=[df]
        for d in df:
            series_name='%s'%(d.columns[0])+' vs '+'%s'%(d.columns[1])
            series_ = chart_data.add_series(series_name)
            for i in range(len(d)):
                series_.add_data_point(d.iloc[i,0], d.iloc[i,1])
        return chart_data
    if datatype == 'bubblechartdata':
        chart_data=BubbleChartData()
        if not isinstance(df,list):
            df=[df]
        for d in df:
            series_name='%s'%(d.columns[0])+' vs '+'%s'%(d.columns[1])
            series_ = chart_data.add_series(series_name)
            for i in range(len(d)):
                series_.add_data_point(d.iloc[i,0],d.iloc[i,1],d.iloc[i,2])
        return chart_data
Пример #40
0
    table.cell(1, 1).text = str(val_AI1[0])
    table.cell(1, 2).text = str(val_AI1[1])
    table.cell(1, 3).text = str(val_AI1[2])

    table.cell(2, 0).text = name_AIs[1]
    table.cell(2, 1).text = str(val_AI2[0])
    table.cell(2, 2).text = str(val_AI2[1])
    table.cell(2, 3).text = str(val_AI2[2])

    table.cell(3, 0).text = name_AIs[2]
    table.cell(3, 1).text = str(val_AI3[0])
    table.cell(3, 2).text = str(val_AI3[1])
    table.cell(3, 3).text = str(val_AI3[2])

    # define chart data ---------------------
    chart_data = ChartData()
    chart_data.categories = name_objects
    chart_data.add_series(name_AIs[0], val_AI1)
    chart_data.add_series(name_AIs[1], val_AI2)
    chart_data.add_series(name_AIs[2], val_AI3)

    # add chart to slide --------------------
    x, y, cx, cy = Cm(0.7), Cm(3.5), Cm(24), Cm(8)

    graphic_frame = slide.shapes.add_chart(
        XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
        )

    chart = graphic_frame.chart

    chart.has_legend = True
Пример #41
0
def create_metric_slide(prs,metric):
    #metric info
    metric_name = metric['timeSeries'][0]['metadata']['metricName']
    category =  metric['timeSeries'][0]['metadata']['attributes']['category']
    print metric_name
    #determine if service, and send to IMPALA_QUERY function if an IMPALA_QUERY slide
    if category == 'SERVICE':
        service_name = metric['timeSeries'][0]['metadata']['attributes']['serviceDisplayName']
    elif category == 'IMPALA_QUERY' and metric_name == 'query_duration':
        create_impala_query_slides(prs,metric)
        return
    elif category == 'IMPALA_QUERY' and metric_name == 'hdfs_average_scan_range':
        return
    else:
        service_name = 'Cluster'

    #metric_name = metric['timeSeries'][0]['metadata']['metricName']
    
    formatted_metric_name = ''
    #format the metric name and capitalize first letters
    metric_name_arr = metric_name.split("_")
    for word in metric_name_arr:
        formatted_metric_name += word.title() + " "
    
    metric_name = formatted_metric_name

    value_access_name = 'max'
    
         
    unit_type = metric['timeSeries'][0]['metadata']['unitNumerators'][0]
    numerator = metric['timeSeries'][0]['metadata']['unitNumerators'][0]
    denominators = metric['timeSeries'][0]['metadata']['unitDenominators']
    timestamps = deque()
    values = deque()
    points = ''
    if not metric['timeSeries'][0]['data']:
        points = metric['timeSeries'][1]['data']
    else:
        points = metric['timeSeries'][0]['data']
    slide = prs.slides.add_slide(prs.slide_layouts[12])
    for point in points:
        formatted_timestamp = point['timestamp'].split("T")
        timestamps.append(formatted_timestamp[0])
        #max value doesn't exist for data points in SUM or INTEGRAL statistics, need to use value key
        if point['type'] == 'CALCULATED':
            values.append(point['value'])
        elif unit_type == 'bytes':
            #Read and write metrics in MB, otherwise in gigabytes
            if 'read' in metric_name.lower() or 'writ' in metric_name.lower():
                value_in_mb = float(point['aggregateStatistics'][value_access_name])/(1024*1024)
                values.append(value_in_mb)
                numerator = 'megabytes'
            else:
                value_in_gb = float(point['aggregateStatistics'][value_access_name])/(1024*1024*1024) 
                values.append(value_in_gb)
                numerator = 'gigabytes'
        else:
            values.append(point['aggregateStatistics'][value_access_name])
    
    #determine what our measurement (IE bytes/sec or just queries)
    if len(denominators) > 0:
        denominator = metric['timeSeries'][0]['metadata']['unitDenominators'][0]
        measurement = numerator + '/' + denominator
    else:
        denominator = 'None'
        measurement = numerator

    # change title and properties
    title = slide.shapes.title
    title.text = service_name + " " + metric_name
    title.text_frame.paragraphs[0].font.name = "calibri"
    title.text_frame.paragraphs[0].font.size = Pt(28)

    # define chart data ---------------------
    chart_data = ChartData()
    chart_data.categories = timestamps
    chart_series_title = measurement
    chart_data.add_series(chart_series_title, values)
    

    # add chart to slide --------------------
    x, y, cx, cy = Inches(2.25), Inches(1.4), Inches(9), Inches(6.0)
    chart =  slide.shapes.add_chart(XL_CHART_TYPE.LINE, x, y, cx, cy, chart_data)
    
    # sets chart plot to all be the same color (default in PPT is all different colors by category)
    plot = chart.chart.plots[0]
    plot.vary_by_categories = False

    # change axis properties
    category_axis = chart.chart.category_axis
    value_axis = chart.chart.value_axis

    # change axis font properties
    category_axis.tick_labels.font.name = "calibri"
    category_axis.tick_labels.font.size = Pt(11)
    value_axis.tick_labels.font.name = "calibri"
    value_axis.tick_labels.font.size = Pt(11)
   
    # change legend properties
    chart.chart.has_legend = True
    chart.chart.legend.include_in_layout = False
    chart.chart.legend.font.name = "calibri"
    chart.chart.legend.font.size = Pt(11)
    return
Пример #42
0
 def series_fixture(self, series_data_):
     chart_data = ChartData()
     chart_data._series_lst = [series_data_, series_data_]
     expected_value = (series_data_, series_data_)
     return chart_data, expected_value
Пример #43
0
 def categories_get_fixture(self, categories):
     chart_data = ChartData()
     chart_data._categories = list(categories)
     expected_value = categories
     return chart_data, expected_value
Пример #44
0
# coding:utf-8
"""
python写pptx,demo
"""
from pptx import Presentation
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Inches, Pt

demo_pptx_path = r'C:\Users\stephen\Desktop\1.pptx'

prs = Presentation(demo_pptx_path)
slide = prs.slides.add_slide(prs.slide_layouts[6])

chart_data = ChartData()
chart_data.categories = ['east', 'west', 'midwest']
chart_data.add_series('series1', (19.2, 21.4, 16.7))

x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
graphic_frame = slide.shapes.add_chart(
    XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
)
chart = graphic_frame.chart
# chart.font.size = Pt(13)

prs.save(r'C:\Users\stephen\Desktop\chart-01.pptx')
Пример #45
0
from pptx import Presentation
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Inches

# create presentation with 1 slide ------
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])

# define chart data ---------------------
chart_data = ChartData()
chart_data.categories = ['East', 'West', 'Midwest']
chart_data.add_series('Series 1', (19.2, 21.4, 16.7))

# add chart to slide --------------------
x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
slide.shapes.add_chart(
    XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
)

prs.save('chart-01.pptx')