【问题标题】:AttributeError: 'Line2D' object has no property 'xlabel'AttributeError:“Line2D”对象没有属性“xlabel”
【发布时间】:2021-01-20 21:11:45
【问题描述】:

下面是我的代码

在 Windows 10 上运行

将以下代码保存到文件中,即testflask.py

import pandas as pd
import matplotlib.pyplot as plt
from flask import Flask, send_file, make_response, render_template
#from flask_ngrok import run_with_ngrok
import io

app = Flask(__name__)
#run_with_ngrok(app) 

@app.route("/")
def home():
  dates = ['2010-11', '2011-12', '2012-13', '2013-14', '2014-15', '2015-16', '2016-17']
  steps = [9000, 9500.756, 9800.859, 10000.262, 9800.972, 10500.058, 11300.703]
  df= pd.DataFrame(
      {'date': dates, 'steps': steps})
  fig, axes = plt.subplots(nrows=1, ncols=1)
  major_xtick=[2,3,4,5,6,7]
  major_xticklabel=['2010-11','2011-12','2012-13','2013-14','2014-15','2015-16','2016-17']
  color=['blue','green','blue']
  ax=df.plot(ax=axes,figsize=(10,8),linewidth=2,marker='o',xlabel="Year" \
          ,ylabel="steps" \
          ,title="2dline plot" \
          ,xlim=(0,8),ylim=(2000,15000) \
          , color=color)
  ax.set_xticks(major_xtick)
  ax.set_xticklabels(major_xticklabel)
  ax.legend()
  bytes_image = io.BytesIO()
  plt.savefig(bytes_image, format='png')
  bytes_image.seek(0)
  bytes_obj = bytes_image #do_plot()
    
  # return render_template('create_plot.html', pfile='abc')
  # return "<h3>  {{ pfile }} is successfully created</h3>"
  return send_file(bytes_obj,
                     attachment_filename='plot.png',
                     mimetype='image/png')

#if __name__ == '__main__':
    # app.run(debug=False)
#    app.run()

打开anaconda提示符改变目录到准确位置,然后在下面跑

set FALSK_APP =testflask.py

然后运行烧瓶命令

flask run

如果我们使用它,它会提供一个本地主机链接,我们会得到错误 AttributeError: 'Line2D' object has no property 'xlabel'

此代码在 Google Colab 中使用 flask_ngrok 完美运行,因此不确定我在本地缺少什么。唯一的区别是在 Google colab 上尝试时,我将 app.run 指令放在了 __main__ 中,而在我的本地,我使用的是外部运行。视情况而定,我希望将运行保持在外部。

我的本​​地环境版本详细信息如下

Flask==1.1.2
Python 3.6.8 :: Anaconda, Inc.

【问题讨论】:

  • 无法找出确切原因,但通过删除 xlabel 和 ylabel 然后使用 ax.set_xlabel 和 ax.set_ylabel 我能够覆盖问题

标签: python-3.x matplotlib flask line-plot


【解决方案1】:

仅供参考,似乎xlabel 和ylabel 在pandas 1.0.5 和1.2.0 之间的DataFrame.plot 中添加了:

https://pandas.pydata.org/pandas-docs/version/1.0.5/reference/api/pandas.DataFrame.plot.html(无 xlabel)

https://pandas.pydata.org/pandas-docs/version/1.2.0/reference/api/pandas.DataFrame.plot.html(带有 xlabel)

所以它可以简单地链接到不同的熊猫版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 2012-12-01
    • 2021-04-19
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多