2016-11-28 12 views
1

python-pptxライブラリを使用して作成したパワーポイントチャートにタイトルを追加しようとしています。私はPython 2.7とPython pptx version 0.6.1でOSXを使っています。グラフのタイトルは、python-pptxを使用して

チャートを作成するためのコードは以下の通りです:、あなたが思っている場合には

chart.has_title = True 
chart.title = sheetname 

値:

df = pd.read_excel("/Users/vagabond/Documents/python_pptx_3/Bar_Charts.xlsx", sheetname=None) 
f = open('/Users/vagabond/Documents/python_pptx_3/Presentation1.pptx') 
prs = ppt.Presentation(f) 

for sheetname, data in df.iteritems(): 

    slide_layout = prs.slide_layouts[9] 
    slide = prs.slides.add_slide(slide_layout) 

    chart_data = ppt.chart.data.XyChartData() 

    series_1 = chart_data.add_series('Series 1') 

    ## iterate through rows of the data frame for desired columns and add data points 
    for index, row in data.iterrows(): 
     series_1.add_data_point(row['Share_of_apples'], row['Share_of_oranges']) 

    ## define co-ordinates on the slide 
    x, y, cx, cy = Inches(1), Inches(3), Inches(7), Inches(4) 

    chart = slide.shapes.add_chart(
    XL_CHART_TYPE.XY_SCATTER, x, y, cx, cy, chart_data 
).chart 

    prs.save('scatter_charts.pptx') 

タイトルを追加するために、私はslide.shapes.add_chart呼び出しの後に次を追加しましたchart.title = sheetnameのsheetnameは、最初の行で読んだdict dfのdictキーです。どのチャートでも、辞書のキーと値のペアのキーを割り当てる必要があります。プログラムはエラーなく実行されます。

問題は、チャートタイトルを追加しないことです。

chart.chart_titleは、任意の値が含まれており、それは私にエラーを与える場合、私がチェック:

--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
<ipython-input-26-7cb6c1e79da2> in <module>() 
     1 chart.has_title = True 
     2 
----> 3 chart.chart_title.has_text_frame = True 

AttributeError: 'Chart' object has no attribute 'chart_title' 
+0

あなたは 'python-pptx'がそのAPIに' Chart.chart_title'を持っていたと思ったことがありますか?ときには、人々は検索の強化提案の1つを見つけ、実際には "それがこれをしたら涼しくないでしょうか?"情報: – scanny

+0

はい、私はドキュメントでそれを読んで、すでに実装されていると思った。誤解している可能性があります。私はリンクを共有します。 – vagabond

+0

リンク先は:http://python-pptx.readthedocs.io/en/latest/dev/analysis/cht-title.html?highlight=titleです。 「まだサポートされていませんが、グラフのタイトルはExcelのワークシートのセル参照としてXMLで指定できます。一般的に、タイトルの建設的な操作によってこれは削除されます。私はそれをどのように解釈するのか分からなかった。 – vagabond

答えて

1

python-pptxはまだチャートのタイトルのためのAPIをサポートしていません。

Chart.has_titleへの割り当てがエラーを起こさない理由は、Pythonがその属性を(動的言語であるため)最初の割り当てに追加するためです。その属性はAPIにはありません。

+0

代わりにslide_titleを追加する方法はありますか?私はしようとしていた: 'title_placeholder = slide.shapes.title title_placeholder.text = sheetname'しかし、再びエラーが発生します:AttributeError: 'NoneType'オブジェクトに属性 'text'がありません。 – vagabond

+0

@vagabond 'slide.shapes.title.text = sheetname'は最も簡単です。あなたが掘り下げて、タイトルや何かの個々の単語の書式を変更するようなことをしたい場合、APIドキュメントはあなたを助けることができます。 – scanny

+0

同じエラー: '---> 25 slide.shapes.title.text =シート名 26 27 prs.save( 'scatter_charts.pptx') はAttributeError: 'NoneType' オブジェクトが属性「text'' – vagabond

関連する問題