代码之家  ›  专栏  ›  技术社区  ›  clicky

x轴上记号标签的Pyplot间距

  •  1
  • clicky  · 技术社区  · 6 年前

    在pyplot图表中,分隔XTick的正确方法是什么?例如,我试图在Jupiter笔记本中绘制对数。我在y轴上有很多数据点,这会创建太多的XTICK(标签相互重叠,无法读取)。如何将打印配置为每10个XTICK仅打印一个标签?

    我试着用

    plt.xticks(np.arange(10))
    

    但这只是以相同的紧密分组方式呈现前10个标签。

    %matplotlib inline
    import matplotlib.pyplot as plt
    x = np.arange(0.1, 10, 0.1)
    plt.plot(np.log(x), label='$\log_e$')
    plt.plot(np.log2(x), label='$\log_2$')
    plt.plot(np.log10(x), label='$\log_{10}$')
    plt.xticks(np.arange(10))
    plt.grid()
    plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
    

    bad xticks

    2 回复  |  直到 6 年前
        1
  •  2
  •   LuckyJosh    6 年前

    问题的一部分出现了,因为您忽略了 x 绘图函数中的坐标。如果您使用

    plt.plot(x, np.log(x))

    您不会有间距问题。

    如果省略 x个 将其内部替换为 np.arange(len(y)) 因此,xaxis的值是0到100,而不是0到10。

    供参考:

    enter image description here enter image description here

    通常,matplotlib有所谓的定位器来处理刻度间距:
    https://matplotlib.org/examples/ticks_and_spines/tick-locators.html

        2
  •  2
  •   Community CDub    4 年前

    一种选择是使用日志axees,例如更改:

    plt.xticks(np.arange(10))
    

    收件人:

    plt.semilogx(np.arange(10))
    

    您将获得: enter image description here

    看见 https://matplotlib.org/api/_as_gen/matplotlib.pyplot.semilogx.html?highlight=semilogx#matplotlib.pyplot.semilogx 查看更多选项。

    一个选项是为记号提供一个值列表:

    plt.xticks([0,10,30,100])
    

    将提供: enter image description here

    但还有其他选项,例如指定 step arange 作用