【发布时间】:2018-01-20 14:12:51
【问题描述】:
有人提出了类似的问题,但尽管多次尝试,我仍然无法让它工作。 Python PPTX Bar Chart negative values , Color Specific Bar Chart Differently in Python PPTX
这是一个简单的例子:
from pptx import Presentation
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Cm
from pptx.dml.color import RGBColor
_red = RGBColor(255, 0, 0)
_green = RGBColor(0, 128, 0)
# create presentation with 1 slide ------
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])
x = ['one','two','three', 'four']
y = [-257.0, 1920.0, 2809.0, 500.0]
specs = {
'height': Cm(7.82),
'width': Cm(14.8),
'left': Cm(2.53),
'top': Cm(5.72)}
data = ChartData()
data.categories = x
label_values = tuple(y)
data.add_series('Series 1', label_values)
frame = slide.shapes.add_chart(XL_CHART_TYPE.BAR_CLUSTERED,
specs['left'],specs['top'], specs['width'],specs['height'], data)
chart = frame.chart
series = chart.series[0]
for i in range(0,len(y)):
point = series.points[i]
fill = point.format.fill
fill.solid()
fill.fore_color.rgb = _red if y[i]<0 else _green
series.invert_if_negative = False
prs.save('chart-01.pptx')
我尝试了许多不同的配置。 Python-pptx 正在工作,因为通过在我的代码中使用series.invert_if_negative 将布尔值设置为 true 或 false,当我打开 powerpoint 演示文稿时,复选框会相应地起作用,如第二张图所示。如果我在演示文稿生成后手动切换几次,它只会在 powerpoint 中正确显示。我尝试更改语句的位置,将其设置为 true 或 false,甚至在设置为 false 之前让它交替多次。
有趣的是,这只发生在负条形图上,即使用正值时,我可以随意更改颜色。即使所有的值都是负数。我无法将它们全部设置为某种颜色。唯一一次他们有颜色并且不显示为白色框是当我根本不尝试更改他们的颜色并且他们默认为演示主题颜色时。
我怀疑这是一个 powerpoint 问题而不是 pptx-python 问题,但我们将不胜感激任何解决此问题的帮助!
Powerpoint 版本:Mac 上的 15.36 Python-pptx 版本:0.6.7
感谢 Scanny 出色的图书馆以及您对所有其他问题的回答。帮了大忙了。
=======更新=======
这个问题有一个解决方法是使用图案填充并将back_color和fore_color设置为相同的颜色以达到相同的效果。
【问题讨论】:
标签: python python-pptx