日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python如何用matplotlib創建三維圖表

瀏覽:131日期:2022-06-29 09:32:02

Matplotlib 最開始被設計為僅支持二維的圖表。到 1.0 版本發布左右,一些三維圖表的工具在二維展示的基礎上被創建了出來,結果就是 Matplotlib 提供了一個方便的(同時也是有限的)的可用于三維數據可視化的一套工具。三維圖表可以使用載入mplot3d工具包來激活,這個包會隨著 Matplotlib 自動安裝:

from mpl_toolkits import mplot3d

一旦模塊被導入,三維 axes 就可以像其他普通 axes 一樣通過關鍵字參數projection=’3d’來創建:

import numpy as npimport matplotlib.pyplot as plt

fig = plt.figure()ax = plt.axes(projection=’3d’)plt.show()

python如何用matplotlib創建三維圖表

三維 axes 激活后,我們可以在上面繪制不同的三維圖表類型。三維圖表在 notebook 中使用交互式圖表展示會優于使用靜態展示;回憶我們前面介紹過,你可以使用%matplotlib notebook而不是%matplotlib inline來激活交互式展示模式。

三維的點和線

三維圖表中最基礎的是使用(x, y, z)坐標定義的一根線或散點的集合。前面介紹過普通的二維圖表,作為類比,使用ax.plot3D和ax.scatter3D函數可以創建三維折線和散點圖。這兩個函數的簽名與二維的版本基本一致,你可以參考[簡單折線圖]和[簡單散點圖]來復習一下這部分的內容。下面我們繪制一個三維中的三角螺旋,在線的附近在繪制一些隨機的點:

ax = plt.axes(projection=’3d’)# 三維螺旋線的數據zline = np.linspace(0, 15, 1000)xline = np.sin(zline)yline = np.cos(zline)ax.plot3D(xline, yline, zline, ’gray’)# 三維散點的數據zdata = 15 * np.random.random(100)xdata = np.sin(zdata) + 0.1 * np.random.randn(100)ydata = np.cos(zdata) + 0.1 * np.random.randn(100)ax.scatter3D(xdata, ydata, zdata, c=zdata, cmap=’Greens’);

python如何用matplotlib創建三維圖表

注意默認情況下,圖中的散點會有透明度的區別,用于體現在圖中散點的深度。雖然三維效果在靜態圖像中難以顯示,你可以使用交互式的視圖來獲得更佳的三維直觀效果。

三維輪廓圖

類似于我們在[密度和輪廓圖]中介紹的內容,mplot3d也包含著能夠創建三維浮雕圖像的工具。就像二維的ax.contour圖表,ax.contour3D要求輸入數據的格式是二維普通網格上計算得到的 Z 軸的數據值。下面我們展示一個三維的正弦函數輪廓圖:

def f(x, y): return np.sin(np.sqrt(x ** 2 + y ** 2))x = np.linspace(-6, 6, 30)y = np.linspace(-6, 6, 30)X, Y = np.meshgrid(x, y)Z = f(X, Y)

fig = plt.figure()ax = plt.axes(projection=’3d’)ax.contour3D(X, Y, Z, 50, cmap=’binary’)ax.set_xlabel(’x’)ax.set_ylabel(’y’)ax.set_zlabel(’z’);

python如何用matplotlib創建三維圖表

有時候默認的視角角度不是最理想的,在這種情況下我們可以使用view_init函數來設置水平角和方位角。在下面的例子中,我們使用的是 60° 的水平角(即以 60° 俯視 x-y 平面)和 35° 的方位角(即將 z 軸逆時針旋轉 35°):

ax.view_init(60, 35)fig

python如何用matplotlib創建三維圖表

同樣,注意到當使用 Matplotlib 交互式展示是,這樣的旋轉可以通過鼠標點擊和拖拽來實現。

框線圖和表面圖

使用網格數據生成的三維圖表還有框線圖和表面圖。這兩種圖表將網格數據投射到特定的三維表面,能夠使得結果圖像非常直觀和具有說服力。下面是一個框線圖的例子:

fig = plt.figure()ax = plt.axes(projection=’3d’)ax.plot_wireframe(X, Y, Z, color=’black’)ax.set_title(’wireframe’);

python如何用matplotlib創建三維圖表

表面圖類似框線圖,區別在于每個框線構成的多邊形都使用顏色進行了填充。添加色圖用于填充多邊形能夠讓圖形表面展示出來:

ax = plt.axes(projection=’3d’)ax.plot_surface(X, Y, Z, rstride=1, cstride=1,cmap=’viridis’, edgecolor=’none’)ax.set_title(’surface’);

python如何用matplotlib創建三維圖表

注意雖然每個顏色填充的表面都是二維的,但是表面的邊緣不需要是直線構成的。下面的例子使用surface3D繪制了一個部分極坐標網格,能夠讓我們切入到函數內部觀察效果:

r = np.linspace(0, 6, 20)theta = np.linspace(-0.9 * np.pi, 0.8 * np.pi, 40)r, theta = np.meshgrid(r, theta)X = r * np.sin(theta)Y = r * np.cos(theta)Z = f(X, Y)ax = plt.axes(projection=’3d’)ax.plot_surface(X, Y, Z, rstride=1, cstride=1,cmap=’viridis’, edgecolor=’none’);

python如何用matplotlib創建三維圖表

表面三角剖分

在一些應用場合中,上面的這種均勻網格繪制的圖表方式太過于局限和不方便。在這些情況下,三角剖分的圖表可以派上用場。如果我們并不是使用笛卡爾坐標系或極坐標系的網格來繪制三維圖表,而是使用一組隨機的點來繪制三維圖表呢?

theta = 2 * np.pi * np.random.random(1000)r = 6 * np.random.random(1000)x = np.ravel(r * np.sin(theta))y = np.ravel(r * np.cos(theta))z = f(x, y)

ax = plt.axes(projection=’3d’)ax.scatter(x, y, z, c=z, cmap=’viridis’, linewidth=0.5);

python如何用matplotlib創建三維圖表

上圖并未形象的表示出表面情況。這種情況下我們可以使用ax.plot_trisurf函數,它能首先根據我們的數據輸入找到各點內在的三角函數形式,然后繪制表面(注意的是這里的 x,y,z 是一維的數組):

ax = plt.axes(projection=’3d’)ax.plot_trisurf(x, y, z,cmap=’viridis’, edgecolor=’none’);

python如何用matplotlib創建三維圖表

上圖的結果很顯然沒有使用網格繪制表面圖那么清晰,但是對于我們并不是使用函數構建數據樣本(數據樣本通常來自真實世界的采樣)的情況下,這能提供很大的幫助。例如我們下面會看到,能使用這種方法繪制一條三維的莫比烏斯環。

例子:繪制莫比烏斯環

python如何用matplotlib創建三維圖表

theta = np.linspace(0, 2 * np.pi, 30)w = np.linspace(-0.25, 0.25, 8)w, theta = np.meshgrid(w, theta)

python如何用matplotlib創建三維圖表

phi = 0.5 * theta

現在我們已經有了所有需要獲得三維坐標值的參數了。我們定義 為每個坐標點距離環形中間的位置,使用它來計算最終(x,y,z) 三維坐標系的坐標值:

# r是坐標點距離環形中心的距離值r = 1 + w * np.cos(phi)# 利用簡單的三角函數知識算得x,y,z坐標值x = np.ravel(r * np.cos(theta))y = np.ravel(r * np.sin(theta))z = np.ravel(w * np.sin(phi))

最后,為了繪制對象,我們必須保證三角剖分是正確的。實現這個最好的方法是在底層的參數上面實現三角剖分,最后讓 Matplotlib 將這個三角剖分投射到三維空間中形成莫比烏斯環。下面的代碼最終繪制圖形:

# 在底層參數的基礎上進行三角剖分from matplotlib.tri import Triangulationtri = Triangulation(np.ravel(w), np.ravel(theta))ax = plt.axes(projection=’3d’)ax.plot_trisurf(x, y, z, triangles=tri.triangles,cmap=’viridis’, linewidths=0.2);ax.set_xlim(-1, 1); ax.set_ylim(-1, 1); ax.set_zlim(-1, 1);

python如何用matplotlib創建三維圖表

結合這些技巧,能夠為你提供在 Matplotlib 創建和展現大量三維對象和模式的能力。

以上就是python如何用matplotlib創建三維圖表的詳細內容,更多關于python用matplotlib創建三維圖表的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩国产在线一| 亚洲第一区色| 日韩综合一区| 精品亚洲a∨| 麻豆视频观看网址久久| 国产传媒在线观看| 欧美特黄视频| 亚洲久草在线| 日本午夜精品一区二区三区电影 | 国产亚洲一区二区三区不卡| 精品久久中文| 久久精品国产网站| 风间由美中文字幕在线看视频国产欧美| 久久男女视频| 日韩精品一级二级| 欧美激情麻豆| 91在线成人| 国产精品videossex久久发布 | 99久久亚洲精品蜜臀| 欧美日韩一区二区综合| 一本一道久久a久久精品蜜桃| 亚洲免费精品| 亚洲日产av中文字幕| 一区二区国产精品| 国产欧美日韩一区二区三区在线| 桃色一区二区| 视频一区视频二区在线观看| 国产婷婷精品| 国产福利91精品一区二区| 国际精品欧美精品| 欧洲一级精品| 久久av在线| 日韩视频久久| 国产精品成人一区二区不卡| 成人国产精选| 日本久久精品| 免费观看日韩电影| 欧美日本二区| 欧美成人a交片免费看| 日韩欧美看国产| 麻豆成人av在线| 午夜精品成人av| av高清不卡| 日本v片在线高清不卡在线观看| 麻豆一区二区三区| 老司机精品视频在线播放| 久久精品欧美一区| 日韩精品成人在线观看| 久久精品午夜| 日韩视频二区| 麻豆精品视频在线观看免费| 欧美日韩在线播放视频| 日韩精品一区二区三区中文在线| 国产精品s色| 婷婷综合五月| 日韩免费高清| 国产精品视区| 丝袜美腿高跟呻吟高潮一区| 精品久久福利| 精品欠久久久中文字幕加勒比| 亚洲综合精品| 日韩中文字幕一区二区三区| 久久国产高清| 美日韩一区二区三区| 欧美日韩国产亚洲一区| 欧美一区久久| 91精品二区| 久久97视频| 免费一级片91| 国产精品99一区二区三| 亚洲va久久| 亚洲天堂免费| 国产精品巨作av| 在线成人直播| 国产精品2区| 久久国产精品99国产| 青草久久视频| 日韩高清中文字幕一区二区| 国产探花一区在线观看| 国产毛片精品久久| 国产精品magnet| 久久精品国产久精国产爱| 欧美一区=区| 色偷偷色偷偷色偷偷在线视频| 亚洲精品伊人| 久久五月天小说| 欧美日韩夜夜| 久久成人国产| 久久久噜噜噜| 国产一区二区三区黄网站 | 天使萌一区二区三区免费观看| 日韩欧美一区二区三区免费看| 69精品国产久热在线观看| 国产亚洲精品v| 久久婷婷亚洲| 成人亚洲精品| 国产精品99精品一区二区三区∴| 日本成人精品| 国产视频一区免费看| 日本高清不卡一区二区三区视频| 国产精品视频一区二区三区四蜜臂| 美女精品网站| 欧美精品一卡| 国产一区二区三区自拍| 日韩电影免费在线观看| 精品一区二区三区中文字幕| 91免费精品国偷自产在线在线| 美女国产一区| 国产婷婷精品| 国产毛片一区| 激情五月综合| 国产一区日韩欧美| 欧美日一区二区| 国产福利片在线观看| 国产精品4hu.www| 国产精品一区二区三区av| 中文字幕亚洲精品乱码| 蘑菇福利视频一区播放| 伊人久久亚洲美女图片| 欧美午夜精彩| 欧美日韩黑人| 国产极品模特精品一二| 国产午夜一区| 一本色道精品久久一区二区三区| 日韩精品视频网| 91精品美女| 国产欧美二区| 欧美在线看片| 尹人成人综合网| 伊人久久婷婷| 欧美日韩精品一区二区三区在线观看| 国内精品福利| 亚洲成人精品| 久久婷婷av| 欧美成人久久| 蜜桃成人av| 99亚洲视频| 91久久午夜| 免费看日韩精品| 日本中文字幕一区二区视频| 国产午夜久久av| 精品成人18| 久久国产日韩| 亚洲视频综合| 亚洲专区一区| 日本亚洲不卡| 日本午夜精品一区二区三区电影| 麻豆精品蜜桃视频网站| 日韩欧美综合| 国产视频久久| 亚洲ww精品| 国产精品1区| 神马久久午夜| 亚洲主播在线| 日本国产亚洲| 国产精品sss在线观看av| 国产一区福利| 久久精品国产大片免费观看| 在线亚洲欧美| 蜜桃一区二区三区在线观看| 欧美在线精品一区| 成人国产精品| 影院欧美亚洲| 久久国产麻豆精品| 高潮一区二区| 美女国产一区| 国产精品白浆| 亚洲午夜黄色| 亚洲成人精选| 国产激情一区| 亚洲午夜黄色| 97久久精品| 亚洲日本网址| 视频一区二区三区在线| 亚洲资源网站| 精品三级国产| 激情五月综合| 国产麻豆精品久久| 97在线精品| 久久国产福利| 麻豆视频久久| 日韩专区一卡二卡| 欧美www视频在线观看| 美女久久一区| 国产成人精品亚洲线观看| 今天的高清视频免费播放成人| 日韩精品国产欧美| 电影天堂国产精品| 日韩精品国产精品| 在线一区av| 日韩三级久久| 日韩伦理一区| 日韩高清一区二区| 欧美日韩一区二区三区视频播放| 欧美日韩99| 亚洲欧美日韩高清在线| 老鸭窝一区二区久久精品| 亚洲一区日韩在线| 国产aⅴ精品一区二区四区| 一区二区国产在线|