日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python绘图3d_超好看的3D绘图方式,Python厉害了!

發布時間:2023/12/14 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python绘图3d_超好看的3D绘图方式,Python厉害了! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【01x01】Axes3D 對象創建方法一:Axes3D(fig)

在 Matplotlib 1.0.0 版本中,繪制 3D 圖需要先導入 Axes3D 包,獲取 figure 畫布對象 fig 后,通過 Axes3D(fig) 方法來創建 Axes3D 對象,具體方法如下:import?numpy?as?np

import?matplotlib.pyplot?as?plt

from?mpl_toolkits.mplot3d?import?Axes3D

#?獲取?figure?畫布并創建?Axes3D?對象

fig?=?plt.figure()

ax?=?Axes3D(fig)

#?數據坐標

z?=?np.linspace(0,?15,?1000)

x?=?np.sin(z)

y?=?np.cos(z)

#?繪制線性圖

ax.plot(x,?y,?z)

plt.show()

【01x02】Axes3D 對象創建方法二:add_subplot

在 Matplotlib 3.2.0 版本中,繪制 3D 圖可以通過創建子圖,然后指定 projection 參數 為 3d 即可,返回的 ax 為 Axes3D 對象,以下兩種方法均可:import?numpy?as?np

import?matplotlib.pyplot?as?plt

#?獲取?figure?畫布并通過子圖創建?Axes3D?對象

fig?=?plt.figure()

ax?=?fig.add_subplot(111,?projection='3d')

#?數據坐標

z?=?np.linspace(0,?15,?1000)

x?=?np.sin(z)

y?=?np.cos(z)

#?繪制線性圖

ax.plot(x,?y,?z)

plt.show()import?numpy?as?np

import?matplotlib.pyplot?as?plt

#?通過子圖創建?Axes3D?對象

ax?=?plt.subplot(111,?projection='3d')

#?數據坐標

z?=?np.linspace(0,?15,?1000)

x?=?np.sin(z)

y?=?np.cos(z)

#?繪制線性圖

ax.plot(x,?y,?z)

plt.show()

【01x03】Axes3D 對象創建方法三:gca

除了以上兩種方法以外,還可以先獲取畫布對象 fig,再通過 fig.gca() 方法獲取當前繪圖區(gca = Get Current Axes),然后指定 projection 參數 為 3d 即可,返回的 ax 為 Axes3D 對象。import?numpy?as?np

import?matplotlib.pyplot?as?plt

#?依次獲取畫布和繪圖區并創建?Axes3D?對象

fig?=?plt.figure()

ax?=?fig.gca(projection='3d')

#?數據坐標

z?=?np.linspace(0,?15,?1000)

x?=?np.sin(z)

y?=?np.cos(z)

#?繪制線性圖

ax.plot(x,?y,?z)

plt.show()

以上三種方法運行結果均為下圖:

【02x00】cmap 與 colorbar

默認情況下,散點圖、線性圖、曲面圖等將以純色著色,但可以通過提供 cmap 參數支持顏色映射。cmap 參數用于設置一些特殊的顏色組合,如漸變色等。

如果使用了 cmap 參數,則可以使用 pyplot.colorbar() 函數來繪制一個色條,即顏色對照條。

基本語法:matplotlib.pyplot.colorbar([mappable=None, cax=None, ax=None, **kw])

部分參數解釋如下表,其他參數,如長度,寬度等請參考官方文檔。參數描述

mappable要設置色條的圖像對象,該參數對于 Figure.colorbar 方法是必需的,但對于 pyplot.colorbar 函數是可選的

cax可選項,要繪制色條的軸

ax可選項,設置色條的顯示位置,通常在一個畫布上有多個子圖時使用

**kw可選項,其他關鍵字參數,參考官方文檔

【03x00】3D 線性圖:Axes3D.plot

基本方法:Axes3D.plot(xs, ys[, zs, zdir='z', *args, **kwargs])參數描述

xs一維數組,點的 x 軸坐標

ys一維數組,點的 y 軸坐標

zs一維數組,可選項,點的 z 軸坐標

zdir可選項,在 3D 軸上繪制 2D 數據時,數據必須以 xs,ys 的形式傳遞

,若此時將 zdir 設置為 ‘y’,數據將會被繪制到 x-z 軸平面上,默認為 ‘z’

**kwargs其他關鍵字參數,可選項,可參見 matplotlib.axes.Axes.plotimport?numpy?as?np

import?matplotlib.pyplot?as?plt

#?設置中文顯示

plt.rcParams['font.sans-serif']?=?['Microsoft?YaHei']

#?依次獲取畫布和繪圖區并創建?Axes3D?對象

fig?=?plt.figure()

ax?=?fig.gca(projection='3d')

#?第一條3D線性圖數據

theta?=?np.linspace(-4?*?np.pi,?4?*?np.pi,?100)

z1?=?np.linspace(-2,?2,?100)

r?=?z1**2?+?1

x1?=?r?*?np.sin(theta)

y1?=?r?*?np.cos(theta)

#?第二條3D線性圖數據

z2?=?np.linspace(-3,?3,?100)

x2?=?np.sin(z2)

y2?=?np.cos(z2)

#?繪制3D線性圖

ax.plot(x1,?y1,?z1,?color='b',?label='3D?線性圖一')

ax.plot(x2,?y2,?z2,?color='r',?label='3D?線性圖二')

#?設置標題、軸標簽、圖例,也可以直接使用?plt.title、plt.xlabel、plt.legend...

ax.set_title('繪制?3D?線性圖示例',?pad=15,?fontsize='12')

ax.set_xlabel('x?軸',?color='r',?fontsize='12')

ax.set_ylabel('y?軸',?color='g',?fontsize='12')

ax.set_zlabel('z?軸',?color='b',?fontsize='12')

ax.legend()

plt.show()

【04x00】3D 散點圖:Axes3D.scatter

基本方法:Axes3D.scatter(xs, ys[, zs=0, zdir='z', s=20, c=None, depthshade=True, *args, **kwargs])參數描述

xs一維數組,點的 x 軸坐標

ys一維數組,點的 y 軸坐標

zs一維數組,可選項,點的 z 軸坐標

zdir可選項,在 3D 軸上繪制 2D 數據時,數據必須以 xs,ys 的形式傳遞

若此時將 zdir 設置為 ‘y’,數據將會被繪制到 x-z 軸平面上,默認為 ‘z’,

s標量或數組類型,可選項,標記的大小,默認 20

c標記的顏色,可選項,可以是單個顏色或者一個顏色列表

支持英文顏色名稱及其簡寫、十六進制顏色碼等,更多顏色示例參見官網Color Demo

depthshadebool 值,可選項,默認 True,是否為散點標記著色以提供深度外觀

**kwargs其他關鍵字參數,可選項,可參見 scatterimport?numpy?as?np

import?matplotlib.pyplot?as?plt

plt.rcParams['font.sans-serif']?=?['Microsoft?YaHei']

#?依次獲取畫布和繪圖區并創建?Axes3D?對象

fig?=?plt.figure()

ax?=?fig.gca(projection='3d')

n?=?100

def?randrange(n,?vmin,?vmax):

return?(vmax?-?vmin)*np.random.rand(n)?+?vmin

'''

定義繪制?n?個隨機點,設置每一組數據點的樣式和范圍

x軸數據位于[23,32]區間,y軸數據位于[0,100]區間,z軸數據位于[zlow,zhigh]區間

'''

for?m,?zlow,?zhigh?in?[('o',?-50,?-25),?('^',?-30,?-5)]:

xs?=?randrange(n,?23,?32)

ys?=?randrange(n,?0,?100)

zs?=?randrange(n,?zlow,?zhigh)

ax.scatter(xs,?ys,?zs,?marker=m)

#?設置標題、軸標簽、圖例,也可以直接使用?plt.title、plt.xlabel...

ax.set_title('繪制?3D?散點圖示例',?pad=15,?fontsize='12')

ax.set_xlabel('x?軸',?color='b')

ax.set_ylabel('y?軸',?color='b')

ax.set_zlabel('z?軸',?color='b')

plt.show()

【05x00】3D 線框圖:Axes3D.plot_wireframe

基本方法:Axes3D.plot_wireframe(X, Y, Z[, *args, **kwargs])參數描述

X二維數組,x 軸數據

Y二維數組,y 軸數據

Z二維數組,z 軸數據

**kwargs其他關鍵字參數,可選項,如線條樣式顏色等,可參見Line3DCollectionimport?numpy?as?np

import?matplotlib.pyplot?as?plt

plt.rcParams['font.sans-serif']?=?['Microsoft?YaHei']

#?獲取?figure?畫布并通過子圖創建?Axes3D?對象

fig?=?plt.figure()

ax?=?fig.add_subplot(111,?projection='3d')

#?定義Z軸坐標的生成方法

def?f(m,?n):

return?np.sin(np.sqrt(m?**?2?+?n?**?2))

#?設置3D線框圖數據

x?=?np.linspace(-6,?6,?30)

y?=?np.linspace(-6,?6,?30)

#?生成網格點坐標矩陣,該方法在系列文章八中有具體介紹

X,?Y?=?np.meshgrid(x,?y)

Z?=?f(X,?Y)

#?繪制3D線框圖

ax.plot_wireframe(X,?Y,?Z,?color='c')

#?設置標題、軸標簽、圖例,也可以直接使用?plt.title、plt.xlabel...

ax.set_title('繪制?3D?線框圖示例',?pad=15,?fontsize='12')

ax.set_xlabel('x?軸')

ax.set_ylabel('y?軸')

ax.set_zlabel('z?軸')

plt.show()

總結

以上是生活随笔為你收集整理的python绘图3d_超好看的3D绘图方式,Python厉害了!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。