最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中Matplotlib實現(xiàn)繪制3D圖的示例代碼

 更新時間:2017年09月04日 14:13:18   作者:聽城  
本篇文章主要介紹了python中Matplotlib實現(xiàn)繪制3D圖的示例代碼,具有一定的參考價值,有興趣的可以了解一下

Matplotlib 也可以繪制 3D 圖像,與二維圖像不同的是,繪制三維圖像主要通過 mplot3d 模塊實現(xiàn)。但是,使用 Matplotlib 繪制三維圖像實際上是在二維畫布上展示,所以一般繪制三維圖像時,同樣需要載入 pyplot 模塊。
mplot3d 模塊下主要包含 4 個大類,分別是:

  • mpl_toolkits.mplot3d.axes3d()
  • mpl_toolkits.mplot3d.axis3d()
  • mpl_toolkits.mplot3d.art3d()
  • mpl_toolkits.mplot3d.proj3d()

其中,axes3d() 下面主要包含了各種實現(xiàn)繪圖的類和方法。axis3d() 主要是包含了和坐標軸相關(guān)的類和方法。art3d() 包含了一些可將 2D 圖像轉(zhuǎn)換并用于 3D 繪制的類和方法。proj3d() 中包含一些零碎的類和方法,例如計算三維向量長度等。

一般情況下,我們用到最多的就是 mpl_toolkits.mplot3d.axes3d() 中的mpl_toolkits.mplot3d.axes3d.Axes3D() 類,而 Axes3D() 下面又存在繪制不同類型 3D 圖的方法。你可以通過下面的方式導(dǎo)入 Axes3D()。

from mpl_toolkits.mplot3d.axes3d import Axes3D或from mpl_toolkits.mplot3d import Axes3D

三維散點圖

首先,我們導(dǎo)入 numpy 隨機生成一組數(shù)據(jù)。

import numpy as np

# x, y, z 均為 0 到 1 之間的 100 個隨機數(shù)
x = np.random.normal(0, 1, 100)
y = np.random.normal(0, 1, 100)
z = np.random.normal(0, 1, 100)

接下來,開始繪圖。第一步是載入 2D, 3D 繪圖模塊。

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

第二步,使用 Axes3D() 創(chuàng)建 3D 圖形對象。

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

最后,調(diào)用散點圖繪制方法繪圖并顯示出來。

ax.scatter(x, y, z)
plt.show()

三維線型圖

線形圖和散點圖相似,需要傳入 x, y, z 三個坐標的數(shù)值。詳細的代碼如下。

# 載入模塊
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

# 生成數(shù)據(jù)
x = np.linspace(-6 * np.pi, 6 * np.pi, 1000)
y = np.sin(x)
z = np.cos(x)

# 創(chuàng)建 3D 圖形對象
fig = plt.figure()
ax = Axes3D(fig)

# 繪制線型圖
ax.plot(x, y, z)

# 顯示圖
plt.show()

三維柱狀圖

繪制完線型圖,我們繼續(xù)嘗試繪制三維柱狀圖,其實它的繪制步驟和上面同樣非常相似。

# 載入模塊
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

# 創(chuàng)建 3D 圖形對象
fig = plt.figure()
ax = Axes3D(fig)

# 生成數(shù)據(jù)并繪圖
x = [0, 1, 2, 3, 4, 5, 6]
for i in x:
  y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  z = abs(np.random.normal(1, 10, 10))
  ax.bar(y, z, i, zdir='y', color=['r', 'g', 'b', 'y'])
plt.show()

三維圖曲面圖

接下來需要繪制的三維曲面圖要麻煩一些,我們需要對數(shù)據(jù)進行矩陣處理。其實和畫二維等高線圖很相似,只是多增加了一個維度。

# 載入模塊
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 創(chuàng)建 3D 圖形對象
fig = plt.figure()
ax = Axes3D(fig)

# 生成數(shù)據(jù)
X = np.arange(-2, 2, 0.1)
Y = np.arange(-2, 2, 0.1)
X, Y = np.meshgrid(X, Y)
Z = np.sqrt(X ** 2 + Y ** 2)

# 繪制曲面圖,并使用 cmap 著色
ax.plot_surface(X, Y, Z, cmap=plt.cm.winter)

plt.show()

cmap=plt.cm.winter 表示采用了 winter 配色方案,也就是下圖的漸變色。

混合圖繪制

混合圖就是將兩種不同類型的圖繪制在一張圖里。繪制混合圖一般有前提條件,那就是兩種不同類型圖的范圍大致相同,否則將會出現(xiàn)嚴重的比例不協(xié)調(diào),而使得混合圖失去意義。

# -*- coding: utf-8 -*
# 載入模塊
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt

# 創(chuàng)建 3D 圖形對象
fig = plt.figure()
ax = Axes3D(fig)

# 生成數(shù)據(jù)并繪制圖 1
x1 = np.linspace(-3 * np.pi, 3 * np.pi, 500)
y1 = np.sin(x1)
ax.plot(x1, y1, zs=0, c='red')

# 生成數(shù)據(jù)并繪制圖 2
x2 = np.random.normal(0, 1, 100)
y2 = np.random.normal(0, 1, 100)
z2 = np.random.normal(0, 1, 100)
ax.scatter(x2, y2, z2)

# 顯示圖
plt.show()

子圖繪制

# -*- coding: utf-8 -*
# 載入模塊
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

# 創(chuàng)建 1 張畫布
fig = plt.figure()

#===============

# 向畫布添加子圖 1 
ax1 = fig.add_subplot(1, 2, 1, projection='3d')

# 生成子圖 1 數(shù)據(jù)
x = np.linspace(-6 * np.pi, 6 * np.pi, 1000)
y = np.sin(x)
z = np.cos(x)

# 繪制第 1 張圖
ax1.plot(x, y, z)

#===============

# 向畫布添加子圖 2
ax2 = fig.add_subplot(1, 2, 2, projection='3d')

# 生成子圖 2 數(shù)據(jù)
X = np.arange(-2, 2, 0.1)
Y = np.arange(-2, 2, 0.1)
X, Y = np.meshgrid(X, Y)
Z = np.sqrt(X ** 2 + Y ** 2)

# 繪制第 2 張圖
ax2.plot_surface(X, Y, Z, cmap=plt.cm.winter)

# 顯示圖
plt.show()

我們可以來看一下這些代碼。由于兩張子圖是繪制在 1 張畫布上面的,所以這里需要提前創(chuàng)建 1 張畫布。然后通過.add_subplot()添加子圖,子圖序號和二維繪圖相似,只是注意 3D 繪圖時要添加projection='3d'參數(shù)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • pycharm無法導(dǎo)入lxml的解決辦法

    pycharm無法導(dǎo)入lxml的解決辦法

    這篇文章主要介紹了pycharm無法導(dǎo)入lxml的解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2021-03-03
  • Python編程itertools模塊處理可迭代集合相關(guān)函數(shù)

    Python編程itertools模塊處理可迭代集合相關(guān)函數(shù)

    本篇博客將為你介紹Python函數(shù)式編程itertools模塊中處理可迭代集合的相關(guān)函數(shù),有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09
  • 安裝python-docx后,無法在pycharm中導(dǎo)入的解決方案

    安裝python-docx后,無法在pycharm中導(dǎo)入的解決方案

    這篇文章主要介紹了安裝python-docx后,無法在pycharm中導(dǎo)入的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Ruby使用eventmachine為HTTP服務(wù)器添加文件下載功能

    Ruby使用eventmachine為HTTP服務(wù)器添加文件下載功能

    這篇文章主要介紹了Ruby使用eventmachine為HTTP服務(wù)器添加文件下載功能的實例,同時作者也分享了Windows上eventmachine安裝報錯問題的解決方法,需要的朋友可以參考下
    2016-04-04
  • python列表,字典,元組簡單用法示例

    python列表,字典,元組簡單用法示例

    這篇文章主要介紹了python列表,字典,元組簡單用法,結(jié)合實例形式分析了Python列表,字典,元組的功能及相關(guān)函數(shù)使用技巧,需要的朋友可以參考下
    2019-07-07
  • python requests模塊的使用示例

    python requests模塊的使用示例

    這篇文章主要介紹了python requests模塊的使用解析,幫助大家更好的理解和學(xué)習使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python解析命令行讀取參數(shù)之a(chǎn)rgparse模塊

    Python解析命令行讀取參數(shù)之a(chǎn)rgparse模塊

    這篇文章主要介紹了Python解析命令行讀取參數(shù)之a(chǎn)rgparse模塊,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-07-07
  • 如何用Python繪制3D柱形圖

    如何用Python繪制3D柱形圖

    這篇文章主要介紹了如何用Python繪制3D柱形圖,幫助大家更好的利用python實現(xiàn)數(shù)據(jù)可視化,感興趣的朋友可以了解下
    2020-09-09
  • Python生成可執(zhí)行文件.exe操作完整流程記錄

    Python生成可執(zhí)行文件.exe操作完整流程記錄

    .exe是文件擴展名,帶有.exe擴展名的文件名按下Enter鍵就可運行,這篇文章主要給大家介紹了關(guān)于Python生成可執(zhí)行文件.exe操作完整流程的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • python學(xué)習之matplotlib繪制散點圖實例

    python學(xué)習之matplotlib繪制散點圖實例

    這篇文章主要介紹了python學(xué)習之matplotlib繪制散點圖實例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12

最新評論

英吉沙县| 茶陵县| 吴桥县| 诸城市| 彰化市| 金坛市| 中牟县| 任丘市| 原平市| 沽源县| 鄂伦春自治旗| 河东区| 兴安盟| 界首市| 勃利县| 嵊州市| 长海县| 新龙县| 陆川县| 青岛市| 二连浩特市| 万宁市| 汝南县| 宝清县| 正定县| 漳平市| 西盟| 富平县| 赤壁市| 翁牛特旗| 台北市| 汉源县| 塔河县| 洪湖市| 山阳县| 洛宁县| 泸西县| 象山县| 道孚县| 博乐市| 安福县|