2017-08-20 41 views
1

ここにNewbがPythonに入ってきて、私を打ち負かす問題に遭遇しました。私は、既存のテンプレートからPPTスライドを作成するPythonコードの抜粋を以下に示します。レイアウトとプレースホルダは正しいですが、私は以下のデータ(x、y_in、& y_out)で動作させることはできません。どんな助けでも大歓迎です。Python-pptx折れ線グラフのエラー

x = [datetime.datetime(2017, 8, 4, 15, 5, tzinfo=<FixedOffset u'+00:00' datetime.timedelta(0)>), datetime.datetime(2017, 8, 4, 15, 10, tzinfo=<FixedOffset u'+00:00' datetime.timedelta(0)>), datetime.datetime(2017, 8, 4, 15, 15, tzinfo=<FixedOffset u'+00:00' datetime.timedelta(0)>), datetime.datetime(2017, 8, 4, 15, 20, tzinfo=<FixedOffset u'+00:00' datetime.timedelta(0)>)] 

y_in = [780993, 538962, 730180, 1135936] 

y_out = [5631489, 6774738, 6485944, 6611580] 

prs = Presentation('Network_Utilization_template_master.pptx') 

slide = prs.slides.add_slide(prs.slide_layouts[2]) 
placeholder = slide.placeholders[17] 
chart_data = CategoryChartData() 
chart_data.categories = x 
chart_data.add_series(y_in) 
chart_data.add_series(y_out) 

graphic_frame = placeholder.insert_chart(XL_CHART_TYPE.LINE, chart_data) 
chart = graphic_frame.chart 
chart.has_legend = True 
chart.legend.include_in_layout = True 
chart.series[0-2].smooth = True 

prs.save("Network_Utilization_" + today_s + ".pptx") 

コンパイラは以下を吐き出す:

Traceback (most recent call last): 
    File "/Users/jemorey/Documents/pptx-2.py", line 81, in <module> 
    graphic_frame = placeholder.insert_chart(XL_CHART_TYPE.LINE, chart_data) 
    File "/Users/jemorey/Library/Python/2.7/lib/python/site-packages/pptx/shapes/placeholder.py", line 291, in insert_chart 
    rId = self.part.add_chart_part(chart_type, chart_data) 
    File "/Users/jemorey/Library/Python/2.7/lib/python/site-packages/pptx/parts/slide.py", line 174, in add_chart_part 
    chart_part = ChartPart.new(chart_type, chart_data, self.package) 
    File "/Users/jemorey/Library/Python/2.7/lib/python/site-packages/pptx/parts/chart.py", line 29, in new 
    chart_blob = chart_data.xml_bytes(chart_type) 
    File "/Users/jemorey/Library/Python/2.7/lib/python/site-packages/pptx/chart/data.py", line 104, in xml_bytes 
    return self._xml(chart_type).encode('utf-8') 
    File "/Users/jemorey/Library/Python/2.7/lib/python/site-packages/pptx/chart/data.py", line 128, in _xml 
    return ChartXmlWriter(chart_type, self).xml 
    File "/Users/jemorey/Library/Python/2.7/lib/python/site-packages/pptx/chart/xmlwriter.py", line 803, in xml 
    'ser_xml':  self._ser_xml, 
    File "/Users/jemorey/Library/Python/2.7/lib/python/site-packages/pptx/chart/xmlwriter.py", line 902, in _ser_xml 
    'tx_xml':  xml_writer.tx_xml, 
    File "/Users/jemorey/Library/Python/2.7/lib/python/site-packages/pptx/chart/xmlwriter.py", line 191, in tx_xml 
    'series_name': self.name, 
    File "/Users/jemorey/Library/Python/2.7/lib/python/site-packages/pptx/chart/xmlwriter.py", line 121, in name 
    return escape(self._series.name) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/sax/saxutils.py", line 32, in escape 
    data = data.replace("&", "&amp;") 
AttributeError: 'list' object has no attribute 'replace' 
+0

好奇心あなたはxの値の文字列、intまたは他の非日時の種類を使用して同じエラーを取得した場合。 'x = [1,2,3,4]'のような単純なもので試すことができますか? –

+0

ありがとうDavid ....私はx = [1,2,3,4]というリストを試してみましたが、まったく同じトレースバックを受け取りました。 – Jerrance

+2

'add_series'メソッドは、最初の引数としてシリーズ名を表す' str'オブジェクトをとるように見えます。あなたはリストを渡すだけです、そして、私はそれがエラーを引き起こしていると思います。 http://python-pptx.readthedocs.io/en/latest/user/charts.html –

答えて

0

デビッドZemensは彼のコメントでかなり右です。シリーズには、ChartData.add_series()の最初の引数として表示される名前があります。名前は、その系列の線色の隣にある凡例に表示され、その系列のデータの列見出しとしても表示されます。それを追加すると、次のステップに進むはずです。

のような何か:

chart_data.add_series('MB in', y_in) 
chart_data.add_series('MB out', y_out) 
+0

ありがとうございます。それは今私がそれを逃したかどうかは分かりませんが、痛いほど明白なようです。 – Jerrance