matplotlib學習日記(十)-共享繪圖區域的坐標軸


(1)共享單一繪圖區域的坐標軸

''' 上一講介紹了畫布的划分,有時候想將多張圖放在同一個繪圖區域, 不想在每個繪圖區域只繪制一幅圖形,這時候借助共享坐標軸的方法實現在一個繪圖區 繪制多幅圖形的目的。 '''
import matplotlib.pyplot as plt import numpy as np import matplotlib as mpl mpl.rcParams["font.sans-serif"]=["SimHei"] mpl.rcParams["axes.unicode_minus"]=False fig, ax1 = plt.subplots() t = np.arange(0.05, 10, 0.01) s1 = np.exp(t) ax1.plot(t, s1, c="b", ls="-") ax1.set_xlabel("x坐標軸") ax1.set_ylabel("以e為底指數函數", color="r") ax1.tick_params("y", color="b") #將y軸標簽,主刻度線和刻度標簽設置
ax2 = ax1.twinx() #實例ax2的主軸與實例ax1的x軸是共享的,實例ax2的刻度線和刻度標簽在右側軸脊處繪制
s2 = np.cos(t**2) ax2.plot(t, s2, c="r", ls=":") ax2.set_ylabel("余弦函數", color="r") ax2.tick_params("y", colors="r") plt.show()

(2)共享不同子區繪圖區域的坐標軸

''' 共享不同子區繪圖區域的坐標軸的方法是subplots(2, 2, sharey=True), sharey=True是一區,二區共享y軸,還有其他參數,row,col,all,none, 其中all和none分別等同True和False。 '''
import matplotlib.pyplot as plt import numpy as np x1 = np.linspace(0, 2*np.pi, 400) y1 = np.cos(x1) x2 = np.linspace(0.01, 10, 100) y2 = np.cos(x2) x3 = np.random.rand(100) y3 = np.linspace(0, 3, 100) x4 = np.arange(0, 6, 0.5) y4 = np.power(x4, 3) fig, ax = plt.subplots(2, 2) #分成4個子區
ax1 = ax[0, 0] ax1.plot(x1, y1) #ax[0, 0]訪問第一個子區
ax2 = ax[0, 1] ax2.plot(x2, y2) ax3 = ax[1, 0] ax3.scatter(x3, y3) ax4 = ax[1, 1] ax4.plot(x4, y4) plt.show()

(3)將(2)中的plt.subplots(2, 2)改成plt.subplots(2, 2, sharex="all")-所有子區共享x軸

(4)參數sharex=“none”

與(2)相同

(5)參數sharex=“row”------->每一行x軸取值范圍實現共享

(6)sharex="col"------------->每列共享x

(7)將共享坐標軸的子區之間的空隙去掉,似乎出了點問題,還是有空隙

import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.0, 10.0, 200) y = np.cos(x)*np.sin(x) y2 = np.exp(-x)*np.sin(x) y3 = 3*np.sin(x) y4 = np.power(x, 0.5) fig, (ax1, ax2, ax3, ax4) = plt.subplots(4, 1, sharex="all") fig.subplots_adjust(hspace=0) ax1.plot(x, y, ls="-", lw=2) ax1.set_yticks(np.arange(-0.6, 0.7, 0.2)) ax1.set_ylim(-0.7, 0.7)

 (8)共享個別子區繪圖區域的坐標軸

import matplotlib.pyplot as plt import numpy as np x1 = np.linspace(0, 2*np.pi, 400) y1 = np.cos(x1**2) x2 = np.linspace(0.01, 10, 100) y2 = np.sin(x2) x3 = np.random.rand(100) y3 = np.linspace(0, 3, 100) x4 = np.arange(0, 6, 0.5) y4 = np.power(x4, 3) fig, ax = plt.subplots(2, 2) ax1 = plt.subplot(221) ax1.plot(x1, y1) ax2 = plt.subplot(222) ax2.plot(x2, y2) ax3 = plt.subplot(223) ax3.plot(x3, y3) ax4 = plt.subplot(224, sharex=ax1) #與子區1共享x軸
ax4.plot(x4, y4) plt.show()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM