python pptx中的彩色图表

python pptx中的彩色图表,python,charts,powerpoint,Python,Charts,Powerpoint,你好!我需要用PowerPoint制作一张图表。但我不能使它多彩。例如,数字1应为红色,数字2-为蓝色,数字3-为绿色,具体取决于先前设置的参数。使用pythonpptx。请告诉我如何解决这个问题 我的代码: # -*- coding: utf-8 -*- from pptx import Presentation from pptx.enum.chart import XL_CHART_TYPE from pptx.chart.data import ChartData from pptx.u

你好!我需要用PowerPoint制作一张图表。但我不能使它多彩。例如,数字1应为红色,数字2-为蓝色,数字3-为绿色,具体取决于先前设置的参数。使用pythonpptx。请告诉我如何解决这个问题

我的代码:

# -*- coding: utf-8 -*-
from pptx import Presentation
from pptx.enum.chart import XL_CHART_TYPE
from pptx.chart.data import ChartData
from pptx.util import Inches
from pptx.enum.chart import XL_TICK_MARK
from pptx.util import Pt
from pptx.dml import line
from pptx.enum.chart import XL_TICK_LABEL_POSITION
from pptx.dml.color import RGBColor
from pptx.enum.chart import XL_LABEL_POSITION

#if a>50: color='green'
#if a>20 and a<50: color='blue'
#if a<20: color='red'
#if b>50: color='green'
#if b>20 and b<50: color='blue'
#if b<20: color='red'
#if c>50: color='green'
#if c>20 and c<50: color='blue'
#if c<20: color='red'

a=70
b=30
c=40


# create presentation with 1 slide ——
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts)
# define chart data ———————
chart_data = ChartData()
chart_data.categories = 
chart_data.add_series('',(a,b,c))

# add chart to slide ——————–
x, y, cx, cy = Inches(1), Inches(2), Inches(3), Inches(3)
graphic_frame = slide.shapes.add_chart(
XL_CHART_TYPE.BAR_CLUSTERED, x, y, cx, cy, chart_data
)
chart = graphic_frame.chart


category_axis = chart.category_axis
category_axis.visible = False
category_axis.has_major_gridlines = False 
category_axis.has_minor_gridlines = False
category_axis.major_tick_mark = XL_TICK_MARK.NONE
category_axis.minor_tick_mark = XL_TICK_MARK.NONE
category_axis.tick_labels.font.size = Pt(12)

value_axis = chart.value_axis
value_axis.minimum_scale = 0
value_axis.maximum_scale = None
value_axis.has_major_gridlines = False 
value_axis.has_minor_gridlines = False
value_axis.minor_tick_mark = XL_TICK_MARK.NONE
value_axis.major_tick_mark = XL_TICK_MARK.NONE
value_axis.axis_labels = False
value_axis.tick_label_position=XL_TICK_LABEL_POSITION.NONE
value_axis.has_axis_labels=False
tick_labels = value_axis.tick_labels
tick_labels.visible=False

plot = chart.plots
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
tick_labels.font.color.rgb=RGBColor(0x0A, 0x42, 0x80)

prs.save('chart-02.pptx') 
#-*-编码:utf-8-*-
从pptx导入演示文稿
从pptx.enum.chart导入XL\u图表\u类型
从pptx.chart.data导入ChartData
从pptx.util导入英寸
从pptx.enum.chart导入XL_勾号
从pptx.util导入Pt
从pptx.dml导入行
从pptx.enum.chart导入XL_勾号_标签_位置
从pptx.dml.color导入RGBColor
从pptx.enum.chart导入XL_标签_位置
#如果a>50:color='green'

#如果a>20和a20,b20和c我知道这是一个老问题,但万一有人像我一样在这里绊倒了。以下是我如何为每个不同系列的图表着色:

colors = {}
colors['seriesa'] = '3C2F80'
colors['seriesb'] = '3C2F81'
colors['seriesc'] = '3C2F82'

for series in chart.series:
    if series.name in colors:
        fill = series.format.fill #fill the legend as well
        fill.solid()
        fill.fore_color.rgb = RGBColor.from_string(colors[series.name])