回覆列表
  • 1 # matplotlib小講堂
    座標軸範圍設定

    座標軸範圍的設定通常有兩種方法,第一種為透過axes.set_xbound和axes.set_ybound對X軸和Y軸進行分別設定,第二種為透過axes.set_xlim和axes.set_ylim方法對X軸和Y軸進行分別設定。

    這兩種方法雖然都能改變座標軸刻度範圍,但是在使用的時候卻有差別。

    1、axes.set_xbound和axes.set_ybound方法

    axes.set_xbound(lower, upper)

    axes.set_ybound(lower, upper)

    axes.set_xbound和axes.set_ybound方法有兩個引數值,這兩個引數值不分先後,大的值代表座標軸的最大值,小的值為座標軸最小值。

    方法例項:

    import numpy as np

    import matplotlib.pyplot as plt

    import matplotlib as mpl

    import matplotlib.image as img

    mpl.rcParams["ytick.color"]="white"

    mpl.rcParams["xtick.color"]="white"

    mpl.rcParams["ytick.labelsize"]="large"

    mpl.rcParams["xtick.labelsize"]="large"

    mpl.rcParams["axes.edgecolor"]="white"

    x = np.linspace(0.0, 5.0)

    y = np.cos(2 * np.pi * x) * np.exp(-x)

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

    bgimg = img.imread("picture.png")

    fig.figimage(bgimg)

    fig.subplots_adjust(left=0.05,right=0.95,top=0.95,bottom=0.05,wspace=0.12)

    ax[0].set_facecolor("None")

    ax[0].plot(x,y,"o-",color="gold")

    ax[1].set_facecolor("None")

    ax[1].plot(x,y,"o-",color="gold")

    ax[1].set_ybound(-0.3,0.5)

    plt.show()

    2、axes.set_xlim和axes.set_ylim方法

    axes.set_xlim(left, right)

    axes.set_ylim(bottom, top)

    axes.set_xlim和axes.set_ylim方法我們已經在座標軸方向中講過,他們的引數分別為X軸左端點值、右端點值和Y軸底部端點值、頂部端點值,所以只要給定引數值就設定好了座標軸範圍。

    方法例項:

    import numpy as np

    import matplotlib.pyplot as plt

    import matplotlib as mpl

    import matplotlib.image as img

    mpl.rcParams["ytick.color"]="white"

    mpl.rcParams["xtick.color"]="white"

    mpl.rcParams["ytick.labelsize"]="large"

    mpl.rcParams["xtick.labelsize"]="large"

    mpl.rcParams["axes.edgecolor"]="white"

    x = np.linspace(0.0, 5.0)

    y = np.cos(2 * np.pi * x) * np.exp(-x)

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

    bgimg = img.imread("picture.png")

    fig.figimage(bgimg)

    fig.subplots_adjust(left=0.05,right=0.95,top=0.95,bottom=0.05,hspace=0.12)

    ax[0].set_facecolor("None")

    ax[0].plot(x,y,"o-",color="gold")

    ax[1].set_facecolor("None")

    ax[1].plot(x,y,"o-",color="gold")

    ax[1].set_xlim(1,4)

    plt.show()

    需要注意的是

    當我們需要使用axes.set_xscale方法改變X軸比例尺時,axes.set_xbound方法和axes.set_xlim方法必須在axes.set_xscale方法之後使用才能正常顯示。

    當我們需要使用axes.invert_xaxis方法對座標軸方向進行改變時,使用axes.set_xbound方法並不會對axes.invert_xaxis方法產生影響;而axes.set_xlim方法與axes.invert_xaxis方法互相影響,位置靠後的程式碼效果會覆蓋位置靠前的程式碼效果。

    對比例項:

    1、左圖axes.set_xbound方法在axes.set_xscale方法之後使用,右圖axes.set_xbound方法在axes.set_xscale方法之前使用

    import numpy as np

    import matplotlib.pyplot as plt

    import matplotlib as mpl

    import matplotlib.image as img

    mpl.rcParams["ytick.color"]="white"

    mpl.rcParams["xtick.color"]="white"

    mpl.rcParams["ytick.labelsize"]="large"

    mpl.rcParams["xtick.labelsize"]="large"

    mpl.rcParams["axes.edgecolor"]="white"

    x = np.linspace(0.0, 5.0)

    y = np.cos(2 * np.pi * x) * np.exp(-x)

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

    bgimg = img.imread("picture.png")

    fig.figimage(bgimg)

    fig.subplots_adjust(left=0.05,right=0.95,top=0.95,bottom=0.05,wspace=0.12)

    ax[0].set_facecolor("None")

    ax[0].plot(x,y,"o-",color="gold")

    ax[0].set_xscale("log",basex=2)

    ax[0].set_xbound(0,4)

    ax[1].set_facecolor("None")

    ax[1].plot(x,y,"o-",color="gold")

    ax[1].set_xbound(0,4)

    ax[1].set_xscale("log",basex=2)

    plt.show()

    2、左圖axes.set_xlim方法在axes.set_xscale方法之後使用,右圖axes.set_xlim方法在axes.set_xscale方法之前使用

    import numpy as np

    import matplotlib.pyplot as plt

    import matplotlib as mpl

    import matplotlib.image as img

    mpl.rcParams["ytick.color"]="white"

    mpl.rcParams["xtick.color"]="white"

    mpl.rcParams["ytick.labelsize"]="large"

    mpl.rcParams["xtick.labelsize"]="large"

    mpl.rcParams["axes.edgecolor"]="white"

    x = np.linspace(0.0, 5.0)

    y = np.cos(2 * np.pi * x) * np.exp(-x)

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

    bgimg = img.imread("picture.png")

    fig.figimage(bgimg)

    fig.subplots_adjust(left=0.05,right=0.95,top=0.95,bottom=0.05,wspace=0.12)

    ax[0].set_facecolor("None")

    ax[0].plot(x,y,"o-",color="gold")

    ax[0].set_xscale("log",basex=2)

    ax[0].set_xlim(0,4)

    ax[1].set_facecolor("None")

    ax[1].plot(x,y,"o-",color="gold")

    ax[1].set_xlim(0,4)

    ax[1].set_xscale("log",basex=2)

    plt.show()

    3、左圖axes.set_xbound方法在axes.invert_xaxis方法之後使用,右圖axes.set_xbound方法在axes.invert_xaxis方法之前使用

    import numpy as np

    import matplotlib.pyplot as plt

    import matplotlib as mpl

    import matplotlib.image as img

    mpl.rcParams["ytick.color"]="white"

    mpl.rcParams["xtick.color"]="white"

    mpl.rcParams["ytick.labelsize"]="large"

    mpl.rcParams["xtick.labelsize"]="large"

    mpl.rcParams["axes.edgecolor"]="white"

    x = np.linspace(0.0, 5.0)

    y = np.cos(2 * np.pi * x) * np.exp(-x)

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

    bgimg = img.imread("picture.png")

    fig.figimage(bgimg)

    fig.subplots_adjust(left=0.05,right=0.95,top=0.95,bottom=0.05,wspace=0.12)

    ax[0].set_facecolor("None")

    ax[0].plot(x,y,"o-",color="gold")

    ax[0].invert_xaxis()

    ax[0].set_xlim(0,4)

    ax[1].set_facecolor("None")

    ax[1].plot(x,y,"o-",color="gold")

    ax[1].set_xlim(0,4)

    ax[1].invert_xaxis()

    plt.show()

    4、左圖axes.set_xlim方法在axes.invert_xaxis方法之後使用,右圖axes.set_xlim方法在axes.invert_xaxis方法之前使用

    import numpy as np

    import matplotlib.pyplot as plt

    import matplotlib as mpl

    import matplotlib.image as img

    mpl.rcParams["ytick.color"]="white"

    mpl.rcParams["xtick.color"]="white"

    mpl.rcParams["ytick.labelsize"]="large"

    mpl.rcParams["xtick.labelsize"]="large"

    mpl.rcParams["axes.edgecolor"]="white"

    x = np.linspace(0.0, 5.0)

    y = np.cos(2 * np.pi * x) * np.exp(-x)

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

    bgimg = img.imread("picture.png")

    fig.figimage(bgimg)

    fig.subplots_adjust(left=0.05,right=0.95,top=0.95,bottom=0.05,wspace=0.12)

    ax[0].set_facecolor("None")

    ax[0].plot(x,y,"o-",color="gold")

    ax[0].invert_xaxis()

    ax[0].set_xlim(0,4)

    ax[1].set_facecolor("None")

    ax[1].plot(x,y,"o-",color="gold")

    ax[1].set_xlim(0,4)

    ax[1].invert_xaxis()

    plt.show()

  • 中秋節和大豐收的關聯?
  • 上路用什麼英雄?