Я использую следующий код, чтобы дать определенный цвет для столбцов, для столбчатой диаграммы, сгенерированной 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

Можно ли сделать так, чтобы диаграмма отображалась правильно, с цветом и не пересекалась с названиями категорий?

2
idazuwaika 28 Май 2017 в 06:08

2 ответа

Попробуйте немного покопаться в xml:

    ccaxis = chart.category_axis
    ticklblPos = ccaxis._element.find('{http://schemas.openxmlformats.org/drawingml/2006/chart}tickLblPos')
    ticklblPos.set('val','low')
1
lkonweb 13 Июл 2017 в 09:06

Замена 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
0
Dadep 20 Сен 2018 в 09:55