我想用 matplotlib 做一些绘图,但存在一个问题,我的一些刻度标签太长。我想知道是否可以使长刻度标签以多行显示。
这是一些代码:
import numpy as np
import matplotlib.pyplot as plt
data = np.random.random(4)
idx = np.arange(4)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_ylim(-0.5, 4-0.5)
ax.set_yticks(b)
ax.tick_params(length=0)
ax.barh(idx, data, zorder=2,
tick_label=["qwertyuioplkjhgfdsa+1s",
"abc","asd","qwerty"])
ax.grid(axis='x')
plt.show()
Run Code Online (Sandbox Code Playgroud)
这是我得到的情节。
正如你所看到的,底部的 ytick 标签太长,我想设置每行最多 10 个字母,所以我希望刻度标签可以显示在
qwertyuiop
lkjhgfdsa+
1s
Run Code Online (Sandbox Code Playgroud)
或者在一行中不太长。
任何帮助,将不胜感激!
可以使用textwrappython的模块。例如,以 10 个字符换行:
import textwrap
f = lambda x: textwrap.fill(x.get_text(), 10)
ax.set_yticklabels(map(f, ax.get_yticklabels()))
Run Code Online (Sandbox Code Playgroud)
尝试添加 \n 到它
ax.barh(idx, data, zorder=2,
tick_label=["qwertyuiop \n lkjhgfdsa+ \n 1s",
"abc","asd","qwerty"])
Run Code Online (Sandbox Code Playgroud)