Matplotlib Xtick重叠

时间:2015-12-22 20:02:49

标签: python numpy matplotlib plot

我需要在每个刻度之间添加间距,使其不重叠。计算x刻度的当前代码是

x = np.arange(-10, 361, 10, dtype = int)
plt.xticks(x)

但它产生的情节是 enter image description here

我还尝试使用以下代码添加空间:

x = np.arange(-10, 361, 10, dtype = int)
plt.xticks(x,['%i   '%w for w in x])

但这只会增加第一个标签(-10)周围的间距,之后不会增加任何内容。 我不想减小字体大小,并希望另一种方法来避免重叠。

1 个答案:

答案 0 :(得分:2)

一种选择是仅标记每个 n th 标记。您可以通过使用主要和次要刻度组合来实现此目的:

import numpy as np
from matplotlib import pyplot as plt

x = np.arange(-10, 361, 10, dtype = int)
y = np.sin(np.deg2rad(2*x))

fig, ax = plt.subplots(1, 1)
ax.plot(x, y)

ax.set_xticks(x, minor=True)        # set minor ticks for each x value
ax.grid(which='both', axis='both')  # show grid lines

plt.show()

enter image description here

更新

@tcaswell 在评论中正确地指出,使用其中一个tick locator classes比直接设置刻度的位置更清晰。例如:

ax.xaxis.set_minor_locator(plt.MultipleLocator(10))

enter image description here

请注意,无论您如何平移或缩放绘图的轴,这都会自动放置跨越整个x轴的刻度线。