感觉可以直接对标签文字加'\n'实现
import matplotlib.pyplot as plt
# 每行最多length个字符
def convert(name, length = 3):
new_name = ''
for i in range(len(name)):
if i and i % length == 0:
new_name += '\n'
new_name += name[i]
return new_name
# test
names = ['oiiaioooooiai', 'test']
values = [3, 5]
fig = plt.figure(figsize = (16, 8))
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)
ax1.bar(names, values)
ax2.bar([convert(name) for name in names], values)
plt.show()