Python筆記:matplotlib 三維圖表繪製方法簡介

2020-09-20 11:00:44

1. python三維圖表繪製方法簡介

python三維圖表的繪製算是二維圖表的一個進階版本,本質上和二維圖表的繪製並無差別,唯一的區別在於使用的庫略有差異。

相較於二維圖表使用的pyplot庫,三維圖表的繪製使用的是Axes3D庫。

庫引入語句為:

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

上下的操作就和二維圖表繪製大差不差了,首先定義三維畫布,然後向裡面繪製三維圖表,最後列印出結果即可。

下面,我們通過一些範例來進行說明。

2. 範例說明

1. 三維曲線圖繪製

首先,我們來看一下三維曲線圖的繪製。

三維曲線圖的繪製和二維曲線圖的繪製方法極其相似,只是我們需要做以下兩點修改:

  1. 將畫布修改為三維座標系;
  2. 傳參時同時傳入x、y、z三個維度的座標訊號。

另外,plot函數需要修改三維曲線繪製的Axes3D.plot函數。

給出程式碼樣例如下:

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

theta = numpy.linspace(0, 3.14*4, 200)
r = numpy.linspace(0, 1, 200)
x = r * numpy.cos(theta)
y = r * numpy.sin(theta)
z = numpy.linspace(0, 2, 200)

fig = plt.figure(figsize=(12, 7))
ax1 = plt.axes(projection='3d')
ax1.plot(x, y, z)
plt.show()

執行即可得到一張三維曲線圖。
在這裡插入圖片描述

2. 三維散點圖繪製

下面,我們來看一下三維空間中的散點圖繪製方法。

其方法其實挺簡單的,就是先繪製x、y面的網點座標,計算相應的z軸高度,而後建立一張三維圖,然後通過Axes3D.scatter函數進行散點圖繪製即可。

我們給出具體的程式碼樣例如下:

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

x = numpy.linspace(-2, 2, 10)
y = numpy.linspace(-2, 2, 10)
xx, yy = numpy.meshgrid(x, y)
z = xx ** 2 - yy ** 2

fig = plt.figure(figsize=(12, 7))
ax1 = plt.axes(projection='3d') # 建立三維座標軸
ax1.scatter(xx, yy, z) # 繪製三維散點圖
plt.show()

執行即可得到三維散點圖。
在這裡插入圖片描述

3. 三維曲面圖繪製

三維曲面圖的繪製與三維極其類似,只需要將Axes3D.scatter函數替換為Axes3D.plot_surface函數即可。

我們就不再多做解釋了,直接給出程式碼樣例如下:

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

x = numpy.linspace(-2, 2, 10)
y = numpy.linspace(-2, 2, 10)
xx, yy = numpy.meshgrid(x, y)
print(xx.shape, yy.shape)
z = xx ** 2 - yy ** 2

fig = plt.figure(figsize=(12, 7))
ax1 = plt.axes(projection='3d') # 建立三維座標軸
ax1.plot_surface(xx, yy, z) # 繪製三維曲面圖
plt.show()

執行即可得到三維曲面圖。
在這裡插入圖片描述

3. 參考連結

  1. https://matplotlib.org/tutorials/toolkits/mplot3d.html
  2. Python三維繪圖–Matplotlib