TShopping

 找回密碼
 註冊
搜索
查看: 1890|回復: 0
打印 上一主題 下一主題

[教學] Matplotlib中的fill_between 用法

[複製鏈接]
跳轉到指定樓層
1#
發表於 2021-1-7 11:17:50 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
Matplotlib中的fill_between()函式總結
  最近在處理資料的時候,需要從資料集合中選出資料來作為訓練集,不同的篩選規則得到的資料塊的分佈一樣,所以就想檢視一下選取了那些資料塊,比如將選中的資料換一種顏色來表示,但是資料如果比較多的話,就不太能看的出來了,所以如果將選中的資料塊以柱狀的形式框出來就好了,這個時候我看到了fill_between()函式,但是網上關於這個函式的部落格都寫的不太明白,所以我自己研究了一下,將其總結如下:
1. 生成測試資料
  1. import numpy as np
  2. import matplotlib.pyplot as plt

  3. x = np.array([i for i in range(30)])
  4. y = np.random.rand(30)

  5. plt.plot(x, y)
  6. plt.show()
複製代碼

2. 曲線覆蓋
  我隨機生成了上圖所示的資料,現在我想將曲線下面的部分全部覆蓋為綠色,這個時候只需要呼叫函式fill_between()就可以實現:
  1. plt.plot(x, y)   # 先將圖畫出來
  2. plt.fill_between(x, 0, y, facecolor='green', alpha=0.3)
  3. plt.show()
複製代碼

可以看到,我用了這個函式的幾個引數:
x:第一個引數表示覆蓋的區域,我直接複製為x,表示整個x都覆蓋
0:表示覆蓋的下限
y:表示覆蓋的上限是y這個曲線
facecolor:覆蓋區域的顏色
alpha:覆蓋區域的透明度[0,1],其值越大,表示越不透明
3. 部分割槽域覆蓋
  1. plt.plot(x, y)   # 先將圖畫出來
  2. plt.fill_between(x[2:15], 0.2, 0.6, facecolor='green', alpha=0.3)
  3. plt.show()
複製代碼

我將x改為x[2:15],y改成了0.6,這樣它就在x軸的214,y軸的0.20.6畫出了這樣一個矩形
4. 兩曲線之間的部分填充
  1. y1 = np.random.rand(30)  # 生成第一條曲線
  2. y2 = y1 + 0.3            # 生成第二條曲線
  3. plt.plot(x, y1, 'b')
  4. plt.plot(x, y2, 'r')
  5. plt.fill_between(x, y1, y2, facecolor='green', alpha=0.3)
  6. plt.show()
複製代碼

把下限換成y1,上限換成y2,在整個x軸上進行填充,這樣就可以實現將兩條曲線之間的部分進行填充。
5. 我想實現的資料高亮功能
  1. x = np.array([i for i in range(30)])
  2. y = np.random.rand(30)

  3. # 設定想要高亮資料的位置
  4. position = [[1, 6],
  5.             [10, 12],
  6.             [20, 23],
  7.             [26, 28]]

  8. # 畫圖
  9. plt.plot(x, y, 'r')
  10. for i in position:
  11.     plt.fill_between(x[ i[0] : i[1] ], 0, 1, facecolor='green', alpha=0.3)
  12. plt.show()
複製代碼

只需要迴圈填充你想要填充的部分,設定填充的上下限,就可以實現這個功能了!


文章出處

 

臉書網友討論

5.png (12.23 KB, 下載次數: 2)

Matplotlib fill_between python

Matplotlib  fill_between python

4.png (23.37 KB, 下載次數: 3)

Matplotlib fill_between python

Matplotlib  fill_between python

3.png (15.28 KB, 下載次數: 4)

Matplotlib fill_between python

Matplotlib  fill_between python

2.png (14.52 KB, 下載次數: 6)

Matplotlib fill_between python

Matplotlib  fill_between python

1.png (15.24 KB, 下載次數: 4)

Matplotlib fill_between python

Matplotlib  fill_between python
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-4-25 23:27 , Processed in 0.048867 second(s), 25 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表