2016-08-15 4 views
0

私は、python-pptxライブラリによって作成された個々の棒グラフの位置にアクセスする方法を探しています。私は、個々のバーは 'シェイプ'とみなされ、左、上、幅、高さのプロパティを持つと仮定します。私はすでに以下のコードを使ってチャートを作成しています。私はすなわちなどpython-pptxの図表内のバーシェイプ位置にアクセスする

感謝を前年比成長を示すバーの間の矢印でより洗練されたグラフを行う必要があるとして

はどのように、チャート内の個々のバーを参照することができ、そしてそのプロパティにアクセスすること。

# CHART 
chart_data = ChartData() 
chart_data.categories = ['January', 'February', 'March', 'April'] 
chart_data.add_series('Revenue', monthly_revenue, 3) 
chart_data.add_series('Cost', monthly_cost, 3) 

graphic_frame = s.placeholders[10].insert_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, chart_data) 
chart = graphic_frame.chart 

plot = chart.plots[0] 
plot.has_data_labels = True 
plot.overlap = -10 
data_labels = plot.data_labels 
data_labels.font.size = Pt(11) 
data_labels.font.color.rgb = RGBColor(0,0,0) 
data_labels.number_format = "#,##0" 

chart.value_axis.has_minor_gridlines = False 
chart.value_axis.has_major_gridlines = False 
chart.value_axis.tick_labels.font.size = Pt(12) 
chart.value_axis.tick_labels.number_format = "#,##0" 
chart.category_axis.tick_labels.font.size = Pt(12) 

chart.series[1].fill.solid() 
chart.series[1].fill.fore_color.rgb = RGBColor(192,80,77) 

答えて

0

グラフの棒グラフには、少なくとも.pptxファイルのXMLに格納されていない個別の位置とサイズの情報がありません。

したがって、短い答えは、あなたがpython-pptxを使用して求めていることを直接行うことはできないということです。

たとえば、VBAを使用してアクセスできるMS APIとIron Pythonでは、Point.left、.top、.width、および.heightが提供されます。そのようなコードでは、PowerPointアプリケーションインスタンスを直接操作することになります。誤っていない場合は、Windowsでのみ操作することに注意してください。だからあなたはそれをサーバー側で実行しようとしている場合、かなり大きな問題があります。

棒などの図の要素はシェイプではありません。チャート全体は、テーブルと同様に、いわゆる「グラフィックスフレーム」形状に含まれる自己完結型オブジェクトです。チャート自体は、Word、Excel、およびPowerPointで共有されるXMLボキャブラリーであるDrawingMLオブジェクト(PresentationMLオブジェクトとは対照的)です。そういうわけで、それらの3つの間でチャートを移植することができます。とにかく、あなたが望むよりも多分バックグラウンドがあるかもしれませんが、短いストーリーは非常に明白な位置とサイズを持っている長方形の形とは非常に異なって扱われます。

+0

詳細な説明はありがとうございます。確かに、このすべての仕組みの基本的な理解に役立ちます。チャートに関する関連事項については、棒グラフと線グラフの両方を同じチャート上に表示することは可能ですか?私はこの声明を見つけました。「ほとんどのチャートは単一のプロットしかなく、python-pptxはマルチプロットチャートの作成をまだサポートしていませんが、まだそれらを持っているチャートの複数のプロットにアクセスできます。本当ですか?回避策はありますか? – idazuwaika

+0

私はそれは良い別の質問だと思います。あなたが 'python-pptx'でそれをタグ付けすると、それは私のフィードに現れます。簡単な答えは、python-pptxの内部構造を掘り下げて使用する必要があるということです。 – scanny

関連する問題