用matplotlib畫等高線圖詳解
等高線圖是在地理課中講述山峰山谷時(shí)繪制的圖形,在機(jī)器學(xué)習(xí)中也會(huì)被用在繪制梯度下降算法的圖形中。
因?yàn)榈雀呔€的圖有三個(gè)信息:x,y以及x,y所對應(yīng)的高度值。
這個(gè)高度值的計(jì)算我們用一個(gè)函數(shù)來表述:
計(jì)算x,y坐標(biāo)對應(yīng)的高度值 def f(x, y): return (1-x/2+x**5+y**3) * np.exp(-x**2-y**2)
這個(gè)函數(shù)看起來挺復(fù)雜的,但我們這里只是為了能夠獲得一個(gè)高度值,因此其中函數(shù)代表什么意義不用關(guān)心,只要知道輸入一個(gè)x,y,輸出一個(gè)高度值就可以了。
要畫出等高線,核心函數(shù)是plt.contourf(),但在這個(gè)函數(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 # 計(jì)算x,y坐標(biāo)對應(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ù),因?yàn)榈雀呔€的顯示是在網(wǎng)格的基礎(chǔ)上添加上高度值 X, Y = np.meshgrid(x, y) # 填充等高線 plt.contourf(X, Y, f(X, Y)) # 顯示圖表 plt.show()
上述代碼顯示的圖形為:
這顏色有點(diǎn)太冷了,我們想顯示熱力圖,那只要在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ù)就越多。
這樣顯示的圖形為:
當(dāng)然,如果我們不調(diào)用前面的plt.contourf()函數(shù),則就會(huì)直接顯示等高線。
最后我們想在等高線中添加上標(biāo)注值:
plt.clabel(C, inline=True, fontsize=12)
顯示的圖為:
完整的代碼為:
import numpy as np import pandas as pd import matplotlib.pyplot as plt # 計(jì)算x,y坐標(biāo)對應(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ù),因?yàn)榈雀呔€的顯示是在網(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繪制動(dòng)畫簡單實(shí)例
Python的地形三維可視化Matplotlib和gdal使用實(shí)例
python學(xué)習(xí)之matplotlib繪制散點(diǎn)圖實(shí)例
如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
- Python通過matplotlib畫雙層餅圖及環(huán)形圖簡單示例
- Python通過matplotlib繪制動(dòng)畫簡單實(shí)例
- Python實(shí)戰(zhàn)小程序利用matplotlib模塊畫圖代碼分享
- Python的地形三維可視化Matplotlib和gdal使用實(shí)例
- matplotlib在python上繪制3D散點(diǎn)圖實(shí)例詳解
- Python數(shù)據(jù)可視化編程通過Matplotlib創(chuàng)建散點(diǎn)圖代碼示例
- python學(xué)習(xí)之matplotlib繪制散點(diǎn)圖實(shí)例
- matplotlib中l(wèi)egend位置調(diào)整解析
相關(guān)文章
Python讀取xlsx文件的實(shí)現(xiàn)方法
這篇文章主要介紹了Python讀取xlsx文件的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python中數(shù)字(Number)數(shù)據(jù)類型常用操作
本文主要介紹了Python中數(shù)字(Number)數(shù)據(jù)類型常用操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Python 字符串大小寫轉(zhuǎn)換的簡單實(shí)例
下面小編就為大家?guī)硪黄狿ython 字符串大小寫轉(zhuǎn)換的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01python讀寫excel數(shù)據(jù)--pandas詳解
這篇文章主要為大家詳細(xì)介紹了python操作EXCEL讀數(shù)據(jù)、寫數(shù)據(jù)的實(shí)例源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09四種Python機(jī)器學(xué)習(xí)超參數(shù)搜索方法總結(jié)
在建模時(shí)模型的超參數(shù)對精度有一定的影響,而設(shè)置和調(diào)整超參數(shù)的取值,往往稱為調(diào)參。本文將演示在sklearn中支持的四種基礎(chǔ)超參數(shù)搜索方法,需要的可以參考一下2022-11-11Django的數(shù)據(jù)模型訪問多對多鍵值的方法
這篇文章主要介紹了Django的數(shù)據(jù)模型訪問多對多鍵值的方法,Django是Python豐富多彩的web框架中最具人氣的一個(gè),需要的朋友可以參考下2015-07-07python將txt等文件中的數(shù)據(jù)讀為numpy數(shù)組的方法
今天小編就為大家分享一篇python將txt等文件中的數(shù)據(jù)讀為numpy數(shù)組的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12Python使用函數(shù)默認(rèn)值實(shí)現(xiàn)函數(shù)靜態(tài)變量的方法
這篇文章主要介紹了Python使用函數(shù)默認(rèn)值實(shí)現(xiàn)函數(shù)靜態(tài)變量的方法,是很實(shí)用的功能,需要的朋友可以參考下2014-08-08