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

MatplotLib中的备用网格背景色

  •  0
  • Dail  · 技术社区  · 6 年前

    请看下图:

    MatplotLib

    创建左侧图表的代码是:

    import matplotlib.pyplot as plt
    import numpy as np
    
    t = np.arange(0.0, 2.0, 0.01)
    s = 1 + np.sin(2*np.pi*t)
    plt.plot(t, s)
    plt.grid(axis='y')
    plt.savefig("test_transparent.png", transparent=True)
    plt.show()
    

    如何交替网格背景色来创建一个类似于右边的图表?

    所以基本上我必须移除X轴,为水平行设置备用背景色。

    我想在不设置Y轴步长的情况下创建这些彩色区域(0、0.25、0.50等等)matplotlib正在使用。MatplotLib自动设置,对我来说没关系,我只需要替换颜色。

    谢谢

    0 回复  |  直到 6 年前
        1
  •  3
  •   JohanC    6 年前

    您可以提取Ytick列表,并为它们创建水平跨距。

    import matplotlib.pyplot as plt
    import numpy as np
    
    t = np.arange(0.0, 2.0, 0.01)
    s = 1 + np.sin(2 * np.pi * t)
    plt.plot(t, s)
    plt.grid(axis='y')
    yticks, _ = plt.yticks()
    for y0, y1 in zip(yticks[::2], yticks[1::2]):
        plt.axhspan(y0, y1, color='black', alpha=0.1, zorder=0)
    plt.yticks(yticks)  # force the same yticks again
    plt.show()
    

    example plot