1 回答
![?](http://img1.sycdn.imooc.com/5458478b0001f01502200220-100-100.jpg)
TA贡献1804条经验 获得超2个赞
一种简单的选择是更改图形大小并使其变得很大(就像您所做的那样)。或者您也可以更改比率并使数字变得非常宽泛。但对我来说,我只有在不使用交互式后端但例如使用Agg. 如果您保存图形并查看png文件,您可以看到额外的空间。我倾向于做的另一件事是以更智能的方式排列标签,以更好地利用空间。
例如,您可以将每隔一个标签向下移动并绘制更长的刻度线,在我看来,这看起来不那么局促。
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
def change_tick_length(ax, i, size):
h = ax.xaxis.get_majorticklines()
i = np.ravel_multi_index((i, 0), (len(h)//2, 2))
h[i].set_markersize(size)
n = 200
new_tick_length = 70
n_whitespace = int(new_tick_length / 3.3) # found this ratio works for me
labels = [f"Dummy{i}" for i in range(n)]
fig = plt.figure(figsize=(40, 15))
ax = fig.subplots()
fig.subplots_adjust(bottom=0.3)
ax.plot(range(n))
ax.set_xticks(range(n))
for i, l in enumerate(labels):
if i % 2 == 0:
labels[i] = f"{l}{' ' * n_whitespace}"
change_tick_length(ax=ax, i=i, size=new_tick_length)
ax.set_xticklabels(labels, rotation=90)
plt.savefig('dummy')
添加回答
举报