Python-更改matplotlib中x或y轴上的“刻度频率”?

发布于 2021-02-02 23:21:40

我正在尝试修复python如何绘制数据。

x = [0,5,9,10,15]

y = [0,1,2,3,4]

然后我会做:

matplotlib.pyplot.plot(x,y)
matplotlib.pyplot.show()

并且x轴的刻度线以5的间隔绘制。是否有办法使其显示1的间隔?

关注者
0
被浏览
167
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    你可以使用以下命令显式设置要在刻度线打勾的位置plt.xticks

    plt.xticks(np.arange(min(x), max(x)+1, 1.0))
    

    例如,

    import numpy as np
    import matplotlib.pyplot as plt
    
    x = [0,5,9,10,15]
    y = [0,1,2,3,4]
    plt.plot(x,y)
    plt.xticks(np.arange(min(x), max(x)+1, 1.0))
    plt.show()
    

    (以防万一,np.arange使用它而不是Python的range函数min(x)max(x)它们是浮点数而不是整数。)

    plt.plot(或ax.plot)功能将自动设置默认x和y限制。如果你希望保留这些限制,而只是更改刻度线的步长,则可以ax.get_xlim()用来发现Matplotlib已设置的限制。

    start, end = ax.get_xlim()
    ax.xaxis.set_ticks(np.arange(start, end, stepsize))
    

    默认的刻度格式设置器应将刻度值四舍五入为有意义的有效数字位数。但是,如果希望对格式有更多控制,则可以定义自己的格式器。例如,

    ax.xaxis.set_major_formatter(ticker.FormatStrFormatter('%0.1f'))
    

    这是一个可运行的示例:

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.ticker as ticker
    
    x = [0,5,9,10,15]
    y = [0,1,2,3,4]
    fig, ax = plt.subplots()
    ax.plot(x,y)
    start, end = ax.get_xlim()
    ax.xaxis.set_ticks(np.arange(start, end, 0.712123))
    ax.xaxis.set_major_formatter(ticker.FormatStrFormatter('%0.1f'))
    plt.show()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看