2017-05-28 84 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')