如何在matplotlib python中自动调整文本?

Gia*_*nou 8 python matplotlib

我在matplotlib中有一个绘图,我的问题是因为当绘图窗口调整​​大小时,x ax将字符串作为值,它们重叠并且无法清楚地读取它们.

类似的事情发生在传说中,如果窗口调整大小,它不会调整大小.

那有什么设置吗?

Joe*_*ton 11

不完全是.(看看有关模糊相似的新matplotlib.pyplot.tight_layout()功能,不过......)

但是,长x刻度标签的常用技巧就是旋转它们.

例如,如果我们有重叠xticklabels的东西:

import matplotlib.pyplot as plt

plt.plot(range(10))
labels = [15 * repr(i) for i in range(10)]
plt.xticks(range(10), labels)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我们可以旋转它们以使它们更容易阅读:(关键是rotation=30.调用plt.tight_layout()仅调整绘图的下边距,使标签不会偏离底边.)

import matplotlib.pyplot as plt

plt.plot(range(10))
labels = [10 * repr(i) for i in range(10)]
plt.xticks(range(10), labels, rotation=30)
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

默认情况下,刻度标签以刻度为中心.对于旋转刻度,标签的左边缘或右边缘在刻度线处开始通常更有意义.

例如,像这样(右侧,正向旋转):

import matplotlib.pyplot as plt

plt.plot(range(10))
labels = [10 * repr(i) for i in range(10)]
plt.xticks(range(10), labels, rotation=30, ha='right')
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

或者这个(左侧,负旋转):

import matplotlib.pyplot as plt

plt.plot(range(10))
labels = [10 * repr(i) for i in range(10)]
plt.xticks(range(10), labels, rotation=-30, ha='left')
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述