Python 2.7 Python pptx折线图错误

Python 2.7 Python pptx折线图错误,python-2.7,python-pptx,Python 2.7,Python Pptx,这里的新手刚开始接触Python,遇到了一个让我头疼的问题。下面是从现有模板创建PPT幻灯片的Python代码摘录。布局和占位符是正确的,但我无法使用下面列出的数据(x、y\u in和y\u out)运行它。非常感谢您的帮助 x = [datetime.datetime(2017, 8, 4, 15, 5, tzinfo=<FixedOffset u'+00:00' datetime.timedelta(0)>), datetime.datetime(2017, 8, 4, 15,

这里的新手刚开始接触Python,遇到了一个让我头疼的问题。下面是从现有模板创建PPT幻灯片的Python代码摘录。布局和占位符是正确的,但我无法使用下面列出的数据(x、y\u in和y\u out)运行它。非常感谢您的帮助

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")
x=[datetime.datetime(2017,8,4,15,5,tzinfo=),datetime.datetime(2017,8,4,15,10,tzinfo=),datetime.datetime(2017,8,4,15,15,15,tzinfo=),datetime.datetime(2017,8,4,15,20,tzinfo=)]
y_in=[7809935389627301801135936]
y_out=[5631489677473864859446611580]
prs=演示文稿('网络利用率\模板\主机.pptx')
幻灯片=prs.slides.add_幻灯片(prs.slide_布局[2])
占位符=幻灯片。占位符[17]
图表数据=类别ChartData()
图表_data.categories=x
图表数据。添加序列(y\U in)
图表\数据。添加\系列(y \ out)
图形\框架=占位符。插入\图表(XL \图表\类型线、图表\数据)
图表=图形\框架。图表
chart.has_legend=True
chart.legend.include_in_layout=True
chart.series[0-2]。平滑=真
prs.save(“网络利用率”+“今天”+“.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'
回溯(最近一次呼叫最后一次):
文件“/Users/jemorey/Documents/pptx-2.py”,第81行,在
图形\框架=占位符。插入\图表(XL \图表\类型线、图表\数据)
文件“/Users/jemorey/Library/Python/2.7/lib/Python/site packages/pptx/shapes/placeholder.py”,第291行,插入图表
rId=self.part.add\u图表\u部分(图表类型、图表数据)
文件“/Users/jemorey/Library/Python/2.7/lib/Python/site-packages/pptx/parts/slide.py”,第174行,添加图表部分
chart\u part=ChartPart.new(图表类型、图表数据、self.package)
文件“/Users/jemorey/Library/Python/2.7/lib/Python/site-packages/pptx/parts/chart.py”,第29行,新格式
chart\u blob=chart\u data.xml\u字节(chart\u类型)
文件“/Users/jemorey/Library/Python/2.7/lib/Python/site packages/pptx/chart/data.py”,第104行,以xml_字节为单位
返回self.\uXML(图表类型).encode('utf-8')
xml格式的文件“/Users/jemorey/Library/Python/2.7/lib/Python/site packages/pptx/chart/data.py”,第128行
返回ChartXmlWriter(图表类型,self).xml
xml格式的文件“/Users/jemorey/Library/Python/2.7/lib/Python/site packages/pptx/chart/xmlwriter.py”,第803行
“ser_xml”:self.\u ser_xml,
文件“/Users/jemorey/Library/Python/2.7/lib/Python/site packages/pptx/chart/xmlwriter.py”,第902行,格式为xml
“tx_xml”:xml_writer.tx_xml,
tx_xml格式的文件“/Users/jemorey/Library/Python/2.7/lib/Python/site packages/pptx/chart/xmlwriter.py”,第191行
“系列名称”:self.name,
文件“/Users/jemorey/Library/Python/2.7/lib/Python/site packages/pptx/chart/xmlwriter.py”,第121行,在名称中
返回转义(self.\u series.name)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/sax/saxutils.py”,第32行,在escape中
数据=数据。替换(“&”、“&;”)
AttributeError:“列表”对象没有属性“替换”

大卫·泽蒙斯的评论非常正确。序列有一个名称,它作为
ChartData.add_series()
的第一个参数出现。该名称将显示在该系列的线颜色旁边的图例中,并显示为该系列数据的列标题。加上这一点,你就可以进入下一步了

比如:

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

David Zemens的评论非常正确。序列有一个名称,它作为
ChartData.add_series()
的第一个参数出现。该名称将显示在该系列的线颜色旁边的图例中,并显示为该系列数据的列标题。加上这一点,你就可以进入下一步了

比如:

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

好奇的是,如果您使用字符串、int或其他非日期时间类型作为x值,是否会出现相同的错误。你能试一下像
x=[1,2,3,4]
这样的简单方法吗?谢谢David……我按照你的建议尝试了list x=[1,2,3,4],并收到了完全相同的回溯。
add\u series
方法似乎将表示序列名称的
str
对象作为它的第一个参数。您只传递了一个列表,我认为这是导致错误的原因。好奇的是,如果您使用字符串、int或其他非日期时间类型作为x值,是否会出现相同的错误。你能试一下像
x=[1,2,3,4]
这样的简单方法吗?谢谢David……我按照你的建议尝试了list x=[1,2,3,4],并收到了完全相同的回溯。
add\u series
方法似乎将表示序列名称的
str
对象作为它的第一个参数。您只传递了一个列表,我认为这是导致错误的原因。谢谢这一点现在看来很明显,不知道我是怎么错过的。谢谢。现在这似乎是显而易见的,我不知道我是怎么错过的。