TigermanSD
TigermanSD

Reputation: 77

Overlapping axis labels in Pandas Python bar chart

Is it possible to create space between my axis labels? They are overlapping (30 labels crunched together) Using python pandas...

genreplot.columns =['genres','pct']
genreplot = genreplot.set_index(['genres'])
genreplot.plot(kind='barh',width = 1)

I would post a picture, but i don't have 10 reputation.....

Upvotes: 2

Views: 2636

Answers (2)

Tim Kirkwood
Tim Kirkwood

Reputation: 716

If your labels are quite long, and you are specifiying them from e.g. a list, you could consider adding some new lines as well:

labels = ['longgggggg_labelllllll_1', 
          'longgggggg_labelllllll_2']

new_labels = [label.replace('_', '\n') for label in labels]

new_labels
['longgggggg
  labelllllll
  1', 
 'longgggggg
  labelllllll
  2']

Upvotes: 0

oxtay
oxtay

Reputation: 4082

I tried recreating your problem but not knowing what exactly your labels are, I can only give you general comments on this problem. There are a few things you can do to reduce the overlapping of labels, including their number, their font size, and their rotation.

Here is an example:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

genreplot = pd.DataFrame(columns=['genres', 'pct'])
genreplot.genres = np.random.random_integers(1, 10, 20)
genreplot.pct = np.random.random_integers(1, 100, 20)
genreplot = genreplot.set_index(['genres'])

ax = genreplot.plot(kind='barh', width=1)

Now, you can set what your labels 5

pct_labels = np.arange(0, 100, 5)
ax.set_xticks(pct_labels)
ax.set_xticklabels(pct_labels, rotation=45)

For further reference, you can take a look at this page for documentation on xticks and yticks:

Upvotes: 2

Related Questions