Barchart with vertical labels in python/matplotlib

PythonChartsMatplotlibBar Chart

Python Problem Overview


I'm using matplotlib to generate a (vertical) barchart. The problem is my labels are rather long. Is there any way to display them vertically, either in the bar or above it or below it?

Python Solutions


Solution 1 - Python

Do you mean something like this:

>>> from matplotlib import *
>>> plot(xrange(10))
>>> yticks(xrange(10), rotation='vertical')

?

In general, to show any text in matplotlib with a vertical orientation, you can add the keyword rotation='vertical'.

For further options, you can look at help(matplotlib.pyplot.text)

The yticks function plots the ticks on the y axis; I am not sure whether you originally meant this or the ylabel function, but the procedure is alwasy the same, you have to add rotation='vertical'

Maybe you can also find useful the options 'verticalalignment' and 'horizontalalignment', which allows you to define how to align the text with respect to the ticks or the other elements.

Solution 2 - Python

In Jupyter Notebook you might use something like this

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

plt.xticks(rotation='vertical')
plt.plot(np.random.randn(100).cumsum())

or you can use:

plt.xticks(rotation=90)

Solution 3 - Python

Please check out this link: https://python-graph-gallery.com/7-custom-barplot-layout/

import matplotlib.pyplot as plt

heights = [10, 20, 15]
bars = ['A_long', 'B_long', 'C_long']
y_pos = range(len(bars))
plt.bar(y_pos, heights)
# Rotation of the bars names
plt.xticks(y_pos, bars, rotation=90)

The result will be like this enter image description here

Hopefully, it helps.

Solution 4 - Python

I would suggest looking at the matplotlib gallery. At least two of the examples seem to be relevant:

  • text_rotation.py for understanding how text layout works
  • barchart_demo2.py, an example of a bar chart with somewhat more complicated layout than the most basic example.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionphihagView Question on Stackoverflow
Solution 1 - PythondalloliogmView Answer on Stackoverflow
Solution 2 - PythonVlad BezdenView Answer on Stackoverflow
Solution 3 - PythonYunzhao XingView Answer on Stackoverflow
Solution 4 - PythonJouni K. SeppänenView Answer on Stackoverflow