我正在使用matplotlib.pyplot
在python中绘制条形图。该图表将包含大量条形图,每个条形图都有自己的标签。因此,标签重叠,并且它们不再可读。我希望标签以对角方式显示,以便它们不会覆盖,例如在this图像中。
这是我的代码:
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()
如何以对角方式显示标签?
答案 0 :(得分:10)
文档中的示例使用:
plt.setp(xtickNames, rotation=45, fontsize=8)
所以在你的情况下,我会想:
ax.set_ticklabels(range(N), rotation=45, fontsize=8)
会给你角度,但它们仍会重叠。所以试试:
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()
答案 1 :(得分:7)
您可以使用set_xticks
参数officially discouraged来代替使用set_xticklabels
或rotation
xticks
,而不是plt.xticks(rotation=45)
使用:
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')
plt.xticks(rotation=45)
plt.show()
通过这种方式,您可以指定刻度标签的旋转,同时让matplotlib为您处理它们的频率/间距。
一个完整的工作示例,基于问题中的代码:
var footer = require('gulp-footer');
var addsrc = require('gulp-add-src');
输出: