Python PPTX条形图负值

Python PPTX条形图负值,python,python-pptx,Python,Python Pptx,对于python pptx生成的条形图,我使用以下代码为条形图指定特定的颜色 chart.series[0].format.fill.solid() chart.series[0].format.fill.fore_color.rgb = RGBColor(160,190,230) 大多数时候这看起来不错。但是,这时条形图有负值,条形图出现了几个问题 负极条没有颜色,是透明的 这些条与类别名称重叠 我尝试了以下两种方法,但都没有效果 chart.series[0].invert_if_n

对于python pptx生成的条形图,我使用以下代码为条形图指定特定的颜色

chart.series[0].format.fill.solid()
chart.series[0].format.fill.fore_color.rgb = RGBColor(160,190,230)
大多数时候这看起来不错。但是,这时条形图有负值,条形图出现了几个问题

  • 负极条没有颜色,是透明的
  • 这些条与类别名称重叠

我尝试了以下两种方法,但都没有效果

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

有没有一种方法可以使图表正确地呈现,使用颜色而不与类别名称重叠?

好吧,这是两个问题。但如果类别名称重叠,则可以通过将“记号标签位置”设置为“低”来解决此问题:

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并单击该复选框解决显示问题时,Data Series>Fill(format)对话框中的“如果为负值则反转”复选框未选中,则可以在
python-pptx
GitHub问题列表中打开一个案例,我们将在下一版本中得到修复


基本上,某些版本的PowerPoint会根据元素的不同(在本例中为
)对布尔元素类型进行不一致的解释,因此,尽管它通过了测试,但在所有PowerPoint版本中的表现都不符合预期。可能就是你看到的

试着深入研究一下xml:

    ccaxis = chart.category_axis
    ticklblPos = ccaxis._element.find('{http://schemas.openxmlformats.org/drawingml/2006/chart}tickLblPos')
    ticklblPos.set('val','low')
fill.solid()
替换为
fill.patterned()
对我很有效:

color_red = RGBColor(254, 98, 94)
color_green = RGBColor(1, 194, 170)

for idx, point in enumerate(series.points):
    fill = point.format.fill
    fill.patterned()
    if data[idx]<0 :
        fill.fore_color.rgb = color_red   
    else:
        fill.back_color.rgb = color_green
color\u red=RGBColor(254,98,94)
颜色\绿色=RGB颜色(1194170)
对于idx,枚举中的点(系列点):
fill=point.format.fill
填充

如果data[idx]在我在python pptx中将选项设置为True时,在UI中选中了选项“如果为负则反转”。然而,这些条带仍然是透明的。当我在UI中取消选中该框时,这些条获得了python pptx中定义的颜色。我使用PowerPoint 2016。@idazuwaika如果在python pptx中为
赋值为False,该怎么办?那么,复选框是什么?我认为是时候用
opc diag
检查图表的底层XML了,并比较前后案例,看看PowerPoint对XML做了什么,从而影响您期望的行为。