python – matplotlib绘制了太多的刻度

我有一个大代码输出几个图像.有时,情节看起来像这样(见下面的MWE):

注意x轴上的刻度几乎相互重叠,看起来非常糟糕.

我的问题是:为什么matplotlib没有意识到这一点,只是简单地绘制更少的刻度(因为它通常没有问题)?如何强制matplotlib以一般方式绘制更少的刻度(即:我不是仅仅适用于此特定绘图的解决方案,这只是一个示例)?

MWE(如果代码看起来不必要复杂,那是因为它只是更大代码的一小部分)

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import random


def scatter_plot(x, y):

    ax = plt.subplot(gs[0:2, 0:2])
    plt.xlim(min(x), 0.00158)
    plt.xlabel('$x$', fontsize=16)
    plt.ylabel('$y$', fontsize=16)
    ax.minorticks_on()

    plt.scatter(x, y)


# Generate random data.
x = [random.random() / 100. for i in xrange(10000)]
y = [random.random() for i in xrange(10000)]
# Define size of output figure.
fig = plt.figure(figsize=(30, 25))  # create the top-level container
gs = gridspec.GridSpec(10, 12)      # create a GridSpec object
# Create plot.
scatter_plot(x, y)
# Save plot to file.
fig.tight_layout()
plt.savefig('out.png', dpi=150)

最佳答案 首先将numpy导入为np,然后调用ax.xaxis.set_ticks(np.arange(xmin,xmax,stepsize)),其中xmin是最小刻度值,xmax是最大刻度值,stepsize是连续刻度之间的差值.使用stepsize =(xmax – xmin)/ tick_count可能是有意义的,其中tick_count是您想要的刻度数.

点赞