matplotlib 对角记号标签

ercv8c1e  于 2023-06-06  发布在  其他
关注(0)|答案(2)|浏览(323)

我正在使用matplotlib.pyplot在python中绘制条形图。图表将包含大量的条形图,每个条形图都有自己的标签。因此,标签重叠,并且它们不再可读。我想标签显示对角线,使他们不overlab,如在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()

标签如何对角显示?

iecba09b

iecba09b1#

而不是使用set_xticksset_xticklabels,这两个都是官方不鼓励的,你可以只使用rotation参数xticks

plt.xticks(rotation=45, ha="right")

通过这种方式,您可以指定刻度标签的旋转,同时让matplotlib为您处理它们的频率/间距。请注意,如果标签都很短,使用ha="right"来右对齐标签文本并不重要(在这种情况下,您可能希望删除它),但如果标签很长且长度可变,则很重要-它可以确保刻度标签的末尾直接位于其标记的刻度下方,并防止标签间隔不一致甚至重叠。
一个完整的工作示例,基于问题中的代码:

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, ha="right")
plt.show()

输出:

9nvpjoqh

9nvpjoqh2#

文档中的示例使用:

plt.setp(xtickNames, rotation=45, fontsize=8)

所以在你的情况下我会想ax.set_ticklabels(range(N), rotation=45, fontsize=8)会给予Angular ,但它们仍然重叠。试着:

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()

相关问题