python - matplotlib 绘制了太多刻度

标签 python matplotlib plot

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

enter image description here

请注意 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)

最佳答案

首先import numpy as np然后调用ax.xaxis.set_ticks(np.arange(xmin, xmax, stepsize)),其中xmin 是最小刻度值,xmax 是最大刻度值,stepsize 是连续刻度之间的差异。使用 stepsize = (xmax - xmin)/tick_count 可能有意义,其中 tick_count 是您想要的刻度数。

关于python - matplotlib 绘制了太多刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28987264/

相关文章:

python - bar() 缺少 1 个必需的位置参数 : 'left'

R - 使用矩阵布局绘制多个栅格

python - 使用pytest如何快速显示失败详情?

python - 给定值可能是不同类型的字典,如何将 python 字典简洁地转换为元组列表?

Python-Nmap按列表扫描端口

python - 在 python 中绘制日期和值

python - 每当 matplotlib 中两条线相遇时,如何使用 Python 打印某些内容?

python - 在 Python 中求解线性整数方程组

python - 如何在 Windows 64 位上安装 ImageMagick 和 Anaconda?

python - 如何使用 matplotlib 制作包含多个数据的条形图