2017-05-28 6 views
1

Ich verwende den folgenden Code, um eine bestimmte Farbe für die Balken zu geben, für ein Balkendiagramm von Python-Pptx generiert.Python PPTX Balkendiagramm negative Werte

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

Das sieht die meiste Zeit gut aus. Allerdings haben die Balkendiagramme dann negative Werte, die Balken, mehrere Probleme treten auf.

  • Die negativen Bars haben keine Farben und transparent
  • Die Balken überschneiden sich mit den Kategorienamen

sample image

ich beide unter Optionen keine Wirkung ausprobiert habe.

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

Gibt es eine Möglichkeit, das Diagramm richtig darzustellen, mit Farbe und nicht mit Kategorienamen überlappend?

Antwort

0

Nun, das sind zwei Fragen. Aber so weit wie die Kategorienamen überlappen, können Sie beheben, dass die Zecke Etikettenposition auf LOW, indem:

from pptx.enum.chart import XL_TICK_LABEL_POSITION 

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

auf dem transparenten (oder vielleicht weiß) farbige Balken, ich vermute, Sie könnten eine Powerpoint werden sehen version- abhängige Nicht-Übereinstimmung mit der Spezifikation, die an anderer Stelle aufgetreten ist. Ich würde es in PowerPoint öffnen und sehen, was Sie im Eigenschaftendialog sehen können, ob die Option "Invertieren wenn negativ" so angezeigt wird, wie Sie sie festgelegt haben und ob sie funktioniert, wenn Sie sie manuell über die PowerPoint-Benutzeroberfläche festlegen.

Wenn das Kontrollkästchen "Invertieren, wenn negativ" im Dialogfeld Datenserie> Füllen (Format) nicht aktiviert ist, wenn Sie es mit python-pptx auf True setzen und das Anzeigeproblem löst, können Sie einen Fall öffnen auf der python-pptx GitHub Probleme Liste und wir werden eine Korrektur in die nächste Version bekommen.

Grundsätzlich interpretieren bestimmte Versionen von PowerPoint einen booleschen Elementtyp wie dieses inkonsistent, abhängig vom Element (<c:invertIfNegative> in this case), also während es die Tests besteht, verhält es sich nicht in allen PowerPoint-Versionen wie erwartet. Es könnte sein, dass du das siehst.

+0

Die Option 'umkehren, wenn negative' wird in der Benutzeroberfläche aktiviert ist, wenn ich die Option auf True in Python-pptx gesetzt. Die Balken sind jedoch immer noch transparent. Wenn ich das Kontrollkästchen in der Benutzeroberfläche deaktiviert habe, haben die Balken die in python-pptx definierte Farbe erhalten. Ich benutze PowerPoint 2016. – idazuwaika

+0

@idazuwaika Wie wäre es, wenn Sie '.invert_if_negative' in python-pptx False zuweisen? Was ist das Kontrollkästchen? Ich denke, es wäre an der Zeit, das zugrunde liegende XML für das Diagramm mit "opc-diag" zu untersuchen und die Vorher- und Nachher-Fälle zu vergleichen, um zu sehen, was PowerPoint mit dem XML macht, um das erwartete Verhalten zu bewirken. – scanny

0

versuchen, ein wenig in die xml zu graben:

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