I am plotting a bar chart in python using matplotlib.pyplot
. The chart will contain a large number of bars, and each bar has its own label. Thus, the labels overlap, and they are no more readable. I would like that the label are displayed diagonally so that they do not overlab, such as in this image.
This is my code:
import matplotlib.pyplot as plt
N =100
menMeans = range(N)
ind = range(N)
ticks = ind
fig = plt.figure()
ax = fig.add_subplot(111)
rects1 = ax.bar(ind, menMeans, align = 'center')
ax.set_xticks(ind)
ax.set_xticklabels( range(N) )
plt.show()
How can the labels be displayed diagonally?
The example in the documents uses:
plt.setp(xtickNames, rotation=45, fontsize=8)
so in your case I would think:
ax.set_ticklabels(range(N), rotation=45, fontsize=8)
would give you the angle but they still overlap. So try:
import matplotlib.pyplot as plt
N =100
menMeans = range(N)
ind = range(N)
ticks = ind
fig = plt.figure()
ax = fig.add_subplot(111)
rects1 = ax.bar(ind, menMeans, align = 'center')
ax.set_xticks(range(0,N,10))
ax.set_xticklabels( range(0,N,10), rotation=45 )
plt.show()