AttributeError: 'Line2D' object has no property 'xlabel'

12.1k views Asked by At

Below is my code

running on windows 10

saved below code to a file, namely 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()

opened anaconda prompt changed directory to the exact place, then ran below

set FALSK_APP =testflask.py

Then ran the flask command

flask run

Upon this it gives a localhost link if we use that we get erorr as AttributeError: 'Line2D' object has no property 'xlabel'

This code had worked perfectly from Google Colab using flask_ngrok so not sure what am I missing here on my local. The Only difference is when tried on Google colab I had put the app.run instruction inside the __main__, whereas in my local I am using the run externally. As the case is I wish to keep the run external.

My local env version details are below

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

There are 1 answers

0
Eric Duminil On

Just for reference, it seems that xlabel and ylabel have been added to DataFrame.plot between pandas 1.0.5 and 1.2.0:

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

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

So it could simply be linked to different pandas versions.