Python PPTX条形图负值
对于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
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做了什么,从而影响您期望的行为。