1

I have a DataFrame as below:

                                   Rate per 100,000 population  Gambling EXP per Adult
Local Government Area                                                     
City of Banyule                             7587.7              555.188876
City of Bayside                             5189.9              171.282451
City of Boroondara                          4877.0              141.675636
City of Brimbank                            9739.0              904.959407
City of Casey                               7790.6              561.086313

I have made several attempts at plotting with the two y-axes corresponding to right two columns with the left most column being the x-axis. But so far I have only managed to get one axes for both. I have tried to mimic the solution here: http://matplotlib.org/examples/api/two_scales.html but I keep failing. I have also looked at other stackoverflow Q&S but haven't found them very clear so far. Would be great if someone could help me solve this problem. Cheers.

1 Answer 1

5

You really should include the code snipped that you tried so that people can actually point you in the right direction. Nonetheless, I'm guessing that you've missed that pandas will open a new figure and new axis object unless you specify a preexisting axis to plot with.

import pandas as pd
import matplotlib.pyplot as plt

# separate data file
dat = pd.read_csv('dat.csv', index_col='Local Government Area')

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()

# the ax keyword sets the axis that the data frame plots to
dat.plot(ax=ax1, y='Rate per 100 000 population', legend=False)
dat.plot(ax=ax2, y='Gambling EXP per Adult', legend=False, color='g')
ax1.set_ylabel('Rate per 100,000 population')
ax2.set_ylabel('Gambling EXP per Adult')
plt.show()

You'll need to futz with it more to get a good looking plot, but that should get you started.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.