【问题标题】:Set custom tick spacing on matplotlib graph在 matplotlib 图上设置自定义刻度间距
【发布时间】:2018-06-11 17:23:13
【问题描述】:

我想将刻度之间的间距设置为自定义距离,而不是自动生成。我想实现这个图在 y 轴上的作用。 https://pasteboard.co/H0XUbpq.jpg

我找到了有关如何设置自定义刻度的方法,但是轴上的间距仍然相同,然后大多数刻度仍然彼此靠近。所以我希望刻度间隔不同于 y 轴上刻度之间的空间,就像我上面链接到的图表一样。

【问题讨论】:

标签: python matplotlib graph


【解决方案1】:

我认为您发布的图片是log plot in y axis。 y轴上的每个刻度值都是下刻度值乘以2。在正常图中,它们的距离是不一样的,但在对数图中,它们的距离是一样的。

由于您没有数据,我将展示一个玩具示例,演示如何在 y 轴上使用对数图:

import matplotlib.pyplot as plt
import matplotlib
import numpy as np

x = np.linspace(20, 51, 7)

y1 = np.exp(x**0.2)
y2 = np.exp(x**0.4)
y3 = np.exp(x**0.6)
y4 = np.exp(x**0.8)

fig, ax = plt.subplots(ncols=1, nrows=1)

ax.plot(x, y1, x, y2, x, y3, x, y4)
ax.set_yscale('log')
ax.minorticks_off()
ax.set_xticks(range(18, 54, 5))
ax.grid(linestyle='--')

ax.grid(linestyle='--')

plt.show()

生成的情节如下图,

【讨论】:

    【解决方案2】:

    您可以为轴使用单独的 FuncFormatters:

    from matplotlib.ticker import FuncFormatter
    from matplotlib.pyplot import show
    import matplotlib.pyplot as plt
    import numpy as np
    
    a=np.random.random((100,100))
    
    # create scaled formatters / for Y with Atom prefix
    formatterY = FuncFormatter(lambda y, pos: '{0:g}'.format(y))
    formatterX = FuncFormatter(lambda x, pos: '{0:g}'.format(x))
    
    # apply formatters 
    fig, ax = plt.subplots()
    ax.yaxis.set_major_formatter(formatterY)
    ax.xaxis.set_major_formatter(formatterX)
    
    plt.imshow(a) 
    
    # create labels
    plt.xlabel('x label')
    plt.ylabel('y label')
    plt.xticks(list(range(0, 100,5))) 
    
    plt.yticks(list(range(100, 0,-20)))
    
    plt.show()
    

    独立地设置它们的样式。请参阅pylab_examples - 可能会给您一个起点。

    【讨论】:

    • 谢谢,但这并不是我真正想要的,我想知道如何设置刻度空间,例如从 10-20 是 1cm,然后从 20-50 也是 1cm 和从50-100也是1cm,这可能吗?以说明中的图表为例。
    • @bernosbernus 您所描述的通常被认为是“对数”缩放:每 1 厘米刻度,[0,1,10,100,1000,10000,100000] 等,用于具有非常当您还希望看到较小值的“价差”时,值较大。误读了你的意图 - jdho 的回答告诉你如何做对数坐标轴
    猜你喜欢
    • 2022-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 2013-02-21
    • 2012-03-12
    • 1970-01-01
    相关资源
    最近更新 更多