用matplotlib畫等高線圖詳解
等高線圖是在地理課中講述山峰山谷時繪制的圖形,在機器學(xué)習(xí)中也會被用在繪制梯度下降算法的圖形中。
因為等高線的圖有三個信息:x,y以及x,y所對應(yīng)的高度值。
這個高度值的計算我們用一個函數(shù)來表述:
計算x,y坐標對應(yīng)的高度值 def f(x, y): return (1-x/2+x**5+y**3) * np.exp(-x**2-y**2)
這個函數(shù)看起來挺復(fù)雜的,但我們這里只是為了能夠獲得一個高度值,因此其中函數(shù)代表什么意義不用關(guān)心,只要知道輸入一個x,y,輸出一個高度值就可以了。
要畫出等高線,核心函數(shù)是plt.contourf(),但在這個函數(shù)中輸入的參數(shù)是x,y對應(yīng)的網(wǎng)格數(shù)據(jù)以及此網(wǎng)格對應(yīng)的高度值,因此還需要調(diào)用np.meshgrid(x,y)把x,y值轉(zhuǎn)換成網(wǎng)格數(shù)據(jù)才行,這樣完整的代碼如下:
畫等高線的代碼如下:
import numpy as np import pandas as pd import matplotlib.pyplot as plt # 計算x,y坐標對應(yīng)的高度值 def f(x, y): return (1-x/2+x**5+y**3) * np.exp(-x**2-y**2) # 生成x,y的數(shù)據(jù) n = 256 x = np.linspace(-3, 3, n) y = np.linspace(-3, 3, n) # 把x,y數(shù)據(jù)生成mesh網(wǎng)格狀的數(shù)據(jù),因為等高線的顯示是在網(wǎng)格的基礎(chǔ)上添加上高度值 X, Y = np.meshgrid(x, y) # 填充等高線 plt.contourf(X, Y, f(X, Y)) # 顯示圖表 plt.show()
上述代碼顯示的圖形為:
這顏色有點太冷了,我們想顯示熱力圖,那只要在plt.contourf()函數(shù)中添加屬性cmap=plt.cm.hot就能顯示熱力圖,其中cmap代表為color map,我們把color map映射成hot(熱力圖),此處關(guān)鍵代碼為:
# 填充等高線 plt.contourf(X, Y, f(X, Y), cmap=plt.cm.hot)
顯示的圖為:
是否顯示得挺熱的。:)
上面是用plt.contourf()填充了等高線,但還有一種方式是可以直接顯示等高線,而不是填充的方式,例如:
C = plt.contour(X, Y, f(X, Y), 20)
這里20代表的是顯示等高線的密集程度,數(shù)值越大,畫的等高線數(shù)就越多。
這樣顯示的圖形為:
當然,如果我們不調(diào)用前面的plt.contourf()函數(shù),則就會直接顯示等高線。
最后我們想在等高線中添加上標注值:
plt.clabel(C, inline=True, fontsize=12)
顯示的圖為:
完整的代碼為:
import numpy as np import pandas as pd import matplotlib.pyplot as plt # 計算x,y坐標對應(yīng)的高度值 def f(x, y): return (1-x/2+x**5+y**3) * np.exp(-x**2-y**2) # 生成x,y的數(shù)據(jù) n = 256 x = np.linspace(-3, 3, n) y = np.linspace(-3, 3, n) # 把x,y數(shù)據(jù)生成mesh網(wǎng)格狀的數(shù)據(jù),因為等高線的顯示是在網(wǎng)格的基礎(chǔ)上添加上高度值 X, Y = np.meshgrid(x, y) # 填充等高線 plt.contourf(X, Y, f(X, Y), 20, cmap=plt.cm.hot) # 添加等高線 C = plt.contour(X, Y, f(X, Y), 20) plt.clabel(C, inline=True, fontsize=12) # 顯示圖表 plt.show()
總結(jié)
以上就是本文關(guān)于用matplotlib畫等高線圖詳解的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
Python的地形三維可視化Matplotlib和gdal使用實例
python學(xué)習(xí)之matplotlib繪制散點圖實例
如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
Python中數(shù)字(Number)數(shù)據(jù)類型常用操作
本文主要介紹了Python中數(shù)字(Number)數(shù)據(jù)類型常用操作,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02python讀寫excel數(shù)據(jù)--pandas詳解
這篇文章主要為大家詳細介紹了python操作EXCEL讀數(shù)據(jù)、寫數(shù)據(jù)的實例源碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09四種Python機器學(xué)習(xí)超參數(shù)搜索方法總結(jié)
在建模時模型的超參數(shù)對精度有一定的影響,而設(shè)置和調(diào)整超參數(shù)的取值,往往稱為調(diào)參。本文將演示在sklearn中支持的四種基礎(chǔ)超參數(shù)搜索方法,需要的可以參考一下2022-11-11Django的數(shù)據(jù)模型訪問多對多鍵值的方法
這篇文章主要介紹了Django的數(shù)據(jù)模型訪問多對多鍵值的方法,Django是Python豐富多彩的web框架中最具人氣的一個,需要的朋友可以參考下2015-07-07python將txt等文件中的數(shù)據(jù)讀為numpy數(shù)組的方法
今天小編就為大家分享一篇python將txt等文件中的數(shù)據(jù)讀為numpy數(shù)組的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12Python使用函數(shù)默認值實現(xiàn)函數(shù)靜態(tài)變量的方法
這篇文章主要介紹了Python使用函數(shù)默認值實現(xiàn)函數(shù)靜態(tài)變量的方法,是很實用的功能,需要的朋友可以參考下2014-08-08