Matplotlib中的fill_between總結
阿新 • • 發佈:2019-01-09
Matplotlib中的fill_between()函式總結
最近在處理資料的時候,需要從資料集合中選出資料來作為訓練集,不同的篩選規則得到的資料塊的分佈一樣,所以就想檢視一下選取了那些資料塊,比如將選中的資料換一種顏色來表示,但是資料如果比較多的話,就不太能看的出來了,所以如果將選中的資料塊以柱狀的形式框出來就好了,這個時候我看到了fill_between()
函式,但是網上關於這個函式的部落格都寫的不太明白,所以我自己研究了一下,將其總結如下:
1. 生成測試資料
import numpy as np
import matplotlib.pyplot as plt
x = np.array([i for i in range(30)])
y = np.random.rand(30)
plt.plot(x, y)
plt.show()
2. 曲線覆蓋
我隨機生成了上圖所示的資料,現在我想將曲線下面的部分全部覆蓋為綠色,這個時候只需要呼叫函式fill_between()
就可以實現:
plt.plot(x, y) # 先將圖畫出來
plt.fill_between(x, 0, y, facecolor='green', alpha=0.3)
plt.show()
可以看到,我用了這個函式的幾個引數:
x
:第一個引數表示覆蓋的區域,我直接複製為x,表示整個x都覆蓋
0
y
:表示覆蓋的上限是y這個曲線facecolor
:覆蓋區域的顏色alpha
:覆蓋區域的透明度[0,1],其值越大,表示越不透明
3. 部分割槽域覆蓋
plt.plot(x, y) # 先將圖畫出來
plt.fill_between(x[2:15], 0.2, 0.6, facecolor='green', alpha=0.3)
plt.show()
我將x改為x[2:15],y改成了0.6,這樣它就在x軸的214,y軸的0.20.6畫出了這樣一個矩形
4. 兩曲線之間的部分填充
y1 = np.random.rand(30) # 生成第一條曲線
y2 = y1 + 0.3 # 生成第二條曲線
plt.plot(x, y1, 'b')
plt.plot(x, y2, 'r')
plt.fill_between(x, y1, y2, facecolor='green', alpha=0.3)
plt.show()
把下限換成y1,上限換成y2,在整個x軸上進行填充,這樣就可以實現將兩條曲線之間的部分進行填充。
5. 我想實現的資料高亮功能
x = np.array([i for i in range(30)])
y = np.random.rand(30)
# 設定想要高亮資料的位置
position = [[1, 6],
[10, 12],
[20, 23],
[26, 28]]
# 畫圖
plt.plot(x, y, 'r')
for i in position:
plt.fill_between(x[ i[0] : i[1] ], 0, 1, facecolor='green', alpha=0.3)
plt.show()
只需要迴圈填充你想要填充的部分,設定填充的上下限,就可以實現這個功能了!