python面積圖之曲線圖的填充
用法:
Axes.fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, *, data=None, **kwargs)
參數(shù)說明:
基礎(chǔ)用法
import matplotlib.pyplot as plt import numpy as np x = [1, 2, 3, 4, 5] y1 = [1, 4, 9, 16, 25] y2 = [9, 9, 9, 9, 9] fig, (ax1, ax2) = plt.subplots(1,2) ax1.fill_between(x, y1, alpha=.5, linewidth=0) ax1.set_title('填充x,y1之間') ax2.fill_between(x, y2, alpha=.5, linewidth=1) ax2.set_title('填充x,y2之間') plt.show()
當然這樣時沒有多大意義的,只是想展示出一個比較明確的填充,類似于區(qū)域全部填充顏色
案例
import matplotlib.pyplot as plt import numpy as np np.random.seed(1) x = np.linspace(0, 8, 16) y1 = 3 + 4*x/8 + np.random.uniform(0.0, 0.5, len(x)) y2 = 1 + 2*x/8 + np.random.uniform(0.0, 0.5, len(x)) fig, ax = plt.subplots() ax.fill_between(x, y1, y2, alpha=.5, linewidth=0) ax.plot(x, (y1 + y2)/2, linewidth=2) ax.set(xlim=(0, 8), xticks=np.arange(1, 8), ylim=(0, 8), yticks=np.arange(1, 8)) plt.show()
復雜的fille_between(案例來源官網(wǎng))
import numpy as np import matplotlib.pyplot as plt Nsteps, Nwalkers = 100, 250 t = np.arange(Nsteps) # an (Nsteps x Nwalkers) array of random walk steps S1 = 0.004 + 0.02*np.random.randn(Nsteps, Nwalkers) S2 = 0.002 + 0.01*np.random.randn(Nsteps, Nwalkers) # an (Nsteps x Nwalkers) array of random walker positions X1 = S1.cumsum(axis=0) X2 = S2.cumsum(axis=0) # Nsteps length arrays empirical means and standard deviations of both # populations over time mu1 = X1.mean(axis=1) sigma1 = X1.std(axis=1) mu2 = X2.mean(axis=1) sigma2 = X2.std(axis=1) # plot it! fig, ax = plt.subplots(1) ax.plot(t, mu1, lw=2, label='mean population 1') ax.plot(t, mu2, lw=2, label='mean population 2') ax.fill_between(t, mu1+sigma1, mu1-sigma1, facecolor='C0', alpha=0.4) ax.fill_between(t, mu2+sigma2, mu2-sigma2, facecolor='C1', alpha=0.4) ax.set_title(r'random walkers empirical $\mu$ and $\pm \sigma$ interval') ax.legend(loc='upper left') ax.set_xlabel('num steps') ax.set_ylabel('position') ax.grid()
where和interpolate
where
定義從何處排除要填充的某些水平區(qū)域。填充區(qū)域由坐標x[其中]定義。更準確地說,如果其中[i]和其中[i+1],則在x[i]和x[i+1]之間填充。請注意,此定義意味著where中兩個假值之間的孤立真值不會導致填充。由于相鄰的假值,真實位置的兩側(cè)仍保持未填充狀態(tài)。
import numpy as np import matplotlib.pyplot as plt fig, ax = plt.subplots() x = np.arange(0, 4 * np.pi, 0.01) y = np.sin(x) ax.plot(x, y, color='black') ax.fill_between(x, y, 0, where=(x>4)&(x<5),color='cyan', alpha=0.5) plt.show()
interpolate
在語義上,where通常用于y1>y2或類似的詞。默認情況下,定義填充區(qū)域的多邊形節(jié)點將僅放置在x陣列中的位置。這樣的多邊形無法描述上述靠近交點的語義。包含交叉點的x截面僅被剪裁。
將“插值”設(shè)置為True將計算實際交點,并將填充區(qū)域延伸到此點。
import numpy as np import matplotlib.pyplot as plt x = np.array([0, 1, 2, 3]) y1 = np.array([0.8, 0.8, 0.2, 0.2]) y2 = np.array([0, 0, 1, 1]) fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True) ax1.set_title('interpolation=False') ax1.plot(x, y1, 'o--') ax1.plot(x, y2, 'o--') ax1.fill_between(x, y1, y2, where=(y1 > y2), color='C0', alpha=0.3) ax1.fill_between(x, y1, y2, where=(y1 < y2), color='C1', alpha=0.3) ax2.set_title('interpolation=True') ax2.plot(x, y1, 'o--') ax2.plot(x, y2, 'o--') ax2.fill_between(x, y1, y2, where=(y1 > y2), color='C0', alpha=0.3, interpolate=True) ax2.fill_between(x, y1, y2, where=(y1 <= y2), color='C1', alpha=0.3, interpolate=True) fig.tight_layout()
step
包含參數(shù)為三個{‘pre’,‘post’,‘mid’}
如果填充應為階躍函數(shù),即x之間的常數(shù),則定義階躍。該值確定階躍發(fā)生的位置:
- “pre”:y值從每個x位置持續(xù)向左,即間隔(x[i-1],x[i]]的值為y[i]。
- “post”:y值從每個x位置持續(xù)向右,即區(qū)間[x[i],x[i+1])的值為y[i]。
- “mid”:步數(shù)出現(xiàn)在x位置的中間。
import numpy as np import matplotlib.pyplot as plt a = np.linspace(0,2*3.14,50) b = np.sin(a) plt.figsize=((12,6)) plt.subplot(131) plt.fill_between(a, b, 0, where = (a > 2) & (a < 5), color = 'green', step='pre') plt.plot(a,b) plt.title('step=pre') plt.subplot(132) plt.fill_between(a, b, 0, where = (a > 2) & (a < 5), color = 'cyan', step='post') plt.plot(a,b) plt.title('step=post') plt.subplot(133) plt.fill_between(a, b, 0, where = (a > 2) & (a < 5), color = 'red', step='mid') plt.plot(a,b) plt.title('step=mid') plt.show()
偏移會有點不一樣,因為函數(shù)的緣故,偏移不太明顯
到此這篇關(guān)于python面積圖之曲線圖的填充的文章就介紹到這了,更多相關(guān)python曲線填充內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
OpenCV-Python實現(xiàn)通用形態(tài)學函數(shù)
本文將結(jié)合實例代碼,介紹OpenCV-Python實現(xiàn)通用形態(tài)學函數(shù),包含開運算,閉運算等復雜的形態(tài)學運算,需要的朋友們下面隨著小編來一起學習學習吧2021-06-06解決Shell執(zhí)行python文件,傳參空格引起的問題
今天小編就為大家分享一篇解決Shell執(zhí)行python文件,傳參空格引起的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10Python使用CuPy模塊實現(xiàn)高效數(shù)值計算
CuPy是一個基于Python的GPU加速計算庫,它提供了與NumPy相似的接口,可以在GPU上進行高效的數(shù)值計算,本文主要介紹一下CuPy的應用場景,并給出一些Python代碼案例,需要的可以參考下2024-02-02Python爬蟲實現(xiàn)抓取電影網(wǎng)站信息并入庫
本文主要介紹了利用Python爬蟲實現(xiàn)抓取電影網(wǎng)站信息的功能,并將抓取到的信息入庫。文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下2022-02-02Python 中的 import 機制之實現(xiàn)遠程導入模塊
模塊導入( import ),是指在一個模塊中使用另一個模塊的代碼的操作,它有利于代碼的復用。這篇文章主要介紹了Python 的 import 機制:實現(xiàn)遠程導入模塊,需要的朋友可以參考下2019-10-10Python中WebService客戶端接口調(diào)用及身份驗證的問題
這篇文章主要介紹了Python中WebService客戶端接口調(diào)用及身份驗證的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11Django restful framework生成API文檔過程詳解
這篇文章主要介紹了Django restful framework生成API文檔過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11Python讀取xlsx數(shù)據(jù)生成圖標代碼實例
這篇文章主要介紹了Python讀取xlsx數(shù)據(jù)生成圖標代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08