Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas Data Frame Plotting

I have this Pandas DataFrame

enter image description here

which gives me this:

enter image description here

How do I

  1. Make a new figure,
  2. Add the title to the figure "Title Here"
  3. Somehow create a mapping so that instead of the labels being 29,30 etc, they say "week 29", "Week 30"etc.
  4. Save a larger version of the chart to my computer (say 10 x 10 inches)

I have been puzzling over this for an hour now!

like image 398
Ross Middleton Avatar asked Aug 14 '13 16:08

Ross Middleton


2 Answers

import matplotlib.pyplot as plt
# 1, 4
f = plt.figure(figsize=(10, 10)) # Change the size as necessary
# 2
dataframe.plot(ax=f.gca()) # figure.gca means "get current axis"
plt.title('Title here!', color='black')
# 3
# Not sure :(
like image 66
Chris Barker Avatar answered Oct 28 '22 17:10

Chris Barker


You can use the rename DataFrame method:

In [1]: df = pd.DataFrame(np.random.randn(7, 5),
                          index=['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
                          columns=[29, 30, 31, 32, 33])

In [2]: df
Out[2]: 
           29        30        31        32        33
Mon -0.080946 -0.072797 -1.019406  1.149162  2.727502
Tue  1.041598 -0.730701 -0.079450  1.323332 -0.823343
Wed  0.338998  1.034372 -0.273139  0.457153  0.007429
Thu -2.239857 -0.439499  0.675963  0.966994  1.348100
Fri  0.050717 -0.506382  1.269897 -0.862577  1.205110
Sat -1.380323  0.200088 -0.685536 -0.425614  0.148111
Sun -0.248540 -1.056943  1.550433  0.651707 -0.041801

In [3]: df.rename(columns=lambda x: 'Week ' + str(x), inplace=True)

In [5]: df
Out[5]: 
      Week 29   Week 30   Week 31   Week 32   Week 33
Mon -0.080946 -0.072797 -1.019406  1.149162  2.727502
Tue  1.041598 -0.730701 -0.079450  1.323332 -0.823343
Wed  0.338998  1.034372 -0.273139  0.457153  0.007429
Thu -2.239857 -0.439499  0.675963  0.966994  1.348100
Fri  0.050717 -0.506382  1.269897 -0.862577  1.205110
Sat -1.380323  0.200088 -0.685536 -0.425614  0.148111
Sun -0.248540 -1.056943  1.550433  0.651707 -0.041801

You can then plot this with a title:

In [4]: df.plot(title='Title Here')

See more in the visualisation section of the docs.

Note: to save the figure you can use savefig.

like image 35
Andy Hayden Avatar answered Oct 28 '22 18:10

Andy Hayden