在 python/matplotlib 中带有垂直标签的条形图

我正在使用 matplotlib 生成一个(垂直)条形图。问题是我的标签太长了。有没有什么办法可以把它们垂直地显示出来,不管是在酒吧上面,还是在酒吧下面?

161258 次浏览

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.

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.

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)

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.