国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
盤一盤 Python 系列 - Matplotlib 3D 圖

重磅干貨,第一時(shí)間送達(dá)

來(lái)源:王的機(jī)器


本文含 2648 ,20 圖表截屏
建議閱讀 15 分鐘


0
引言

Matplotlib 最初在設(shè)計(jì)時(shí)僅考慮了二維繪圖。但在其 1.0 版本后,一些構(gòu)建在二維繪圖基礎(chǔ)上的三維繪圖也可以使用了。要畫三維(立體) 圖,首先導(dǎo)入 mplot3d 工具包。

from mpl_toolkits import mplot3d

一旦 mplot3d 工具包被導(dǎo)入,創(chuàng)建立體圖有兩種方式:

  • fig = plt.figure()ax = mplot3d.Axes3D(fig)

  • fig = plt.figure()ax = plt.axes(projection='3d')

第二種方式更簡(jiǎn)單些。如果要同時(shí)生成圖和坐標(biāo)系,還可用以下語(yǔ)句:

fig, ax = plt.subplots(1, 1, 

          subplot_kw={'projection':'3d'})

三種生成立體圖的方式是等價(jià)的,生成的圖如下所示。

本帖只介紹三種類型的 3D 圖,它們?cè)诹炕鹑谥凶畛S玫?,分別是

  1. 線框圖 (wide frame)

  2. 曲面圖 (surface)

  3. 條形圖 (bar)



1
線框圖




畫線框圖和曲面圖數(shù)據(jù)都使用外匯波動(dòng)率數(shù)據(jù),首先用 Pandas excel 讀取數(shù)據(jù),該波動(dòng)率平面有 10 個(gè)期限和 5 個(gè)價(jià)位。

FX_vol = pd.read_csv( 'FX Volatility.csv', index_col=0 )FX_vol

畫立體圖首先用 np.meshgrid() 函數(shù)創(chuàng)建 (x, y) 平面的網(wǎng)格 X 和 Y,它們的形狀都是 (10, 4)。

線框圖采用值網(wǎng)格并將其投影到指定的三維表面上,用 plot_wireframe() 函數(shù)來(lái)實(shí)現(xiàn),其參數(shù) X, Y, Z 對(duì)應(yīng)的每個(gè)點(diǎn) (x, y, z) 可當(dāng)成坐標(biāo)畫在立體圖中。



2
曲面圖




曲面圖類似于線框圖,把線框包圍的多邊形填充成面。用 plot_surface() 函數(shù)來(lái)實(shí)現(xiàn),代碼和上面幾乎一樣,參數(shù) color 和 edgecolor 分別控制面和邊的顏色。

還可設(shè)定參數(shù) cmap 填充漸變色,并在圖旁附上顏色條。


繼續(xù)追求完美。


波動(dòng)率平面是由不同期限上的波動(dòng)率曲線組成的,了解金融市場(chǎng)數(shù)據(jù)的讀者應(yīng)該對(duì)波動(dòng)率微笑(volatility smile) 這個(gè)詞不陌生,“微笑”是固定某個(gè)期限觀察曲線沿著價(jià)位維度呈現(xiàn)的形狀。在立體圖中添加折線用 plot3D() 函數(shù)來(lái)實(shí)現(xiàn),由于在 3D 空間畫 2D 折線,那么也需要傳入xs, ys, zs 三個(gè)參數(shù)。如下面代碼第 6 和 7 行所示,在一個(gè) for 循環(huán)中,固定期限維度 ys 不斷添加折線 (xs, zs),即沿著價(jià)位維度 xs 的波動(dòng)率值 zs。

雖然上圖的視角不錯(cuò),但有時(shí)默認(rèn)的視角不是最好的,通過(guò) 

    view_init(elev, azim

函數(shù)可以調(diào)整角度,其中參數(shù) elev 值是水平面 (z = 0) 的仰角度 (elevationangle),參數(shù) azim 值是 (x, y) 坐標(biāo)系的方位角度 (azimuth angle)。下圖給出了參數(shù)為 (0, 0)、(0, 90) 和 (90, 0) 的視圖。

fig, ax = plt.subplots(1,3, figsize=(16,6), subplot_kw={'projection':'3d'})ax[0].view_init(0,0)ax[0].set( title='elev=0, azim=0', xlabel='X', ylabel='Y', zlabel='Z' )ax[1].view_init(0,90)ax[1].set( title='elev=0, azim=90', xlabel='X', ylabel='Y', zlabel='Z' )ax[2].view_init(90,0)ax[2].set( title='elev=90, azim=0', xlabel='X', ylabel='Y', zlabel='Z' )plt.show()

回到實(shí)際例子,x,y, z 對(duì)應(yīng)的是價(jià)位、期限和波動(dòng)率。下圖畫出視角為 (0,0) 的圖,可看出水平面仰角為 0,從該圖可以明顯看出,不論哪個(gè)價(jià)位,波動(dòng)率隨著期限變長(zhǎng)而變大。

下圖畫出視角為 (0, 90) 的圖,水平面仰角還是 0,從該圖可看出,不論哪個(gè)期限,波動(dòng)率在 10 put 價(jià)位最大。

下圖畫出視角為 (90, 0) 的圖,水平面仰角是 90,感覺(jué)在俯視水平面,波動(dòng)率值大小的信息完全丟失。

這樣一看,本例還是用默認(rèn)的視角好。



3
條形圖




3D 條形圖和 2D 條形圖相比,擴(kuò)展了比較信息的能力。下面代碼比較二項(xiàng)分布和泊松分布的概率質(zhì)量函數(shù) (PMF)。

條形圖中的每個(gè)條需要兩個(gè)參數(shù):位置大小,對(duì)應(yīng)著下面代碼中的 (x, y, z) (dx, dy, dz)

  • 位置是在立體圖中的坐標(biāo),x 和 z 都好理解,由于在 y 軸上畫兩個(gè)分布,因此有兩個(gè) y 值

  • 大小指的條形的長(zhǎng)寬高,長(zhǎng) dx 和寬 dy 分別是 0.5 和 0.2,而高 dz 就是 PMF 值


當(dāng) M 20,p 0.5,λ 為 p 的乘積等于 10 時(shí),二項(xiàng)分布和泊松分布的差別挺大的。

將 M 改成 100p 改成 0.1 后,同樣將 λ 設(shè)為 M 的乘積,再運(yùn)行上面代碼生成下圖,發(fā)現(xiàn)二項(xiàng)分布和泊松分布的圖幾乎是一樣的。這時(shí)因?yàn)楫?dāng) M 值越大和 p 值越小的時(shí)候,兩個(gè)分布越來(lái)越近似。


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
python繪制三維圖
【python入門項(xiàng)目】在 Python 中創(chuàng)建條形圖追趕動(dòng)畫
人人都能看懂的Matplotlib繪圖原理講解!
matplotlib.pyplot中繪畫操作
python中的figure什么意思
如何用 Python 讓你的 PPT 數(shù)據(jù)動(dòng)起來(lái)?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服