2017-05-28 82 views
1

我使用下面的代码给出了条形图的特定颜色,python-pptx生成的条形图。Python PPTX条形图负值

chart.series[0].format.fill.solid() 
chart.series[0].format.fill.fore_color.rgb = RGBColor(160,190,230) 

大部分时间看起来都不错。然而,那么条形图就会出现负值,横条会出现几个问题。

  • 负条没有颜色和透明
  • 酒吧与类别名称

sample image

我已经试过两个下列选项中没有效果重叠。

chart.series[0].invert_if_negative = True 
chart.series[0].invert_if_negative = False 

有没有办法让图表正确呈现,颜色与类别名称不重叠?

回答

0

嗯,这是两个问题。但据类别名称重叠,您可以修复通过设置刻度标记的位置LOW:

from pptx.enum.chart import XL_TICK_LABEL_POSITION 

category_axis = chart.category_axis 
category_axis.tick_label_position = XL_TICK_LABEL_POSITION.LOW 

在透明(或白色或许)彩条,我怀疑你可能会看到的版本 - 一个PowerPoint依赖于不符合其他地方出现的规范。我会在PowerPoint中打开它,看看你可以在属性对话框中看到什么,反转如果否定选项以您设置它的方式出现,以及当您使用PowerPoint UI手动设置它时是否运行。

如果在使用python-pptx将其设置为True并且单击该复选框解决了显示问题时,数据系列>填充(格式)对话框中未选中“如果为负数则反转”复选框,则可以打开一个案例在python-pptx GitHub问题列表中,我们将修复下一个版本。

基本上,某些版本的PowerPoint会根据元素(<c:invertIfNegative> in this case)解释不一致的布尔元素类型,因此在通过测试时,它在所有PowerPoint版本中的行为不像预期的那样。这可能就是你所看到的。

+0

选项“倒置,如果负面”在UI进行检查,当我设置在python-PPTX格式的选项设置为True。然而,酒吧仍然是透明的。当我取消选中UI中的框时,条形会获得python-pptx中定义的颜色。我使用PowerPoint 2016. – idazuwaika

+0

@idazuwaika当你在Python-pptx中将False赋给'.invert_if_negative'时,怎么办?什么是复选框呢?我认为可能是时候用'opc-diag'检查图表的底层XML,并比较前后的情况,以了解PowerPoint对XML的影响,以实现您期望的行为。 – scanny

0

尝试一点点挖掘到XML:

ccaxis = chart.category_axis 
    ticklblPos = ccaxis._element.find('{http://schemas.openxmlformats.org/drawingml/2006/chart}tickLblPos') 
    ticklblPos.set('val','low')