【问题标题】:matplotlib scale axes according to arbitrary functionmatplotlib 根据任意函数缩放轴
【发布时间】:2021-07-13 13:09:17
【问题描述】:

我正在绘制一个 5 次多项式...为简单起见,让我们使用 y=(x-3)(x-2)x(x+2)(x+3)。在x 的合理间隔内,例如从 -5 到 5,该图的信息量不是很大,因为该函数在“有趣”范围之外增长得非常快,大约 -3 到 3:

symlog scale 稍微好一些,但现在我正在查看 5 次多项式的对数,这对我来说有点难以解释:

理想情况下,我可以在多项式尺度上绘制它。因为我知道我有一个 5 次多项式,所以 5 次根尺度将能够适合我的所有数据,并且图形应该在边缘附近呈线性表现。是否可以使用任意函数缩放我的轴?

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    我将这个example调整如下:

    import numpy as np
    import matplotlib.pyplot as plt
    
    y = np.random.normal(loc=0.5, scale=0.4, size=1000)
    x = np.arange(len(y))
    
    fig, ax = plt.subplots(figsize=(6, 8), constrained_layout=True)
    
    t = np.arange(1, 170.0, 0.1)
    s = t / 2.
    
    ax.plot(t, s, '-', lw=2)
    ax.set_yscale('function', functions=(lambda x: x**5, lambda x: x**(0.2)))
    ax.grid(True)
    ax.set_ylim(0,5)
    plt.show()
    

    【讨论】:

    • 我很惊讶它真的有效。你不想要 xaxis 和 yaxis,你想要正向和反向functions=(lambda x: x**5, lambda x: x**(0.2))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    相关资源
    最近更新 更多