一、matplotlib3D圖
matplotlib3D是matplotlib中的一種圖形繪製工具,可以用來製作三維圖形,特別適合用於數據可視化。使用matplotlib3D可以繪製曲面圖、散點圖、線框圖等多種類型的圖形。
下面是一個繪製曲面圖的代碼示例:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 生成X和Y的數據
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
# 生成Z的數據
R = np.sqrt(X ** 2 + Y ** 2)
Z = np.sin(R)
# 繪製曲面圖
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.hot)
# 設置軸標籤
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
二、matplotlib3D盒圖
matplotlib3D還可以用來繪製盒圖,盒圖可以顯示數據的分布情況,主要用於觀察數據的離散程度和異常點。
下面是一個繪製盒圖的代碼示例:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# 生成數據
np.random.seed(100)
data = np.random.normal(size=(100, 3))
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 繪製盒圖
ax.boxplot(data)
# 設置軸標籤
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
三、matplotlib3D截面
matplotlib3D還可以用來展示截面效果,將三維圖形在某一維度上截面呈現,可以更好地觀察數據的分布情況。
下面是一個繪製截面的代碼示例:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 生成X、Y和Z的數據
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X ** 2 + Y ** 2)
Z = np.sin(R)
# 繪製曲面圖
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.hot)
# 繪製z=0處的截面
cset = ax.contourf(X, Y, Z, zdir='z', offset=0, cmap=plt.cm.hot)
# 設置軸標籤
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
四、matplotlib3D圓柱圖
matplotlib3D可以繪製圓柱圖,用於比較不同數據之間的柱狀圖。
下面是一個繪製圓柱圖的代碼示例:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 生成數據
x = np.random.sample(10)
y = np.random.sample(10)
z = np.zeros(10)
# 繪製圓柱圖
ax.bar3d(x, y, z, 0.1, 0.1, z+1)
# 設置軸標籤
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
五、matplotlib3D柱狀圖
matplotlib3D也可以用來繪製三維柱狀圖,可以更好地顯示三元數據的關係。
下面是一個繪製柱狀圖的代碼示例:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 生成數據
x = np.arange(4)
y = np.arange(4)
z = np.random.randint(0, 10, size=4)
# 繪製柱狀圖
ax.bar(x, y, z, zdir='y', color=['r', 'g', 'b', 'y'])
# 設置軸標籤
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
六、matplotlib3D柱形圖
matplotlib3D還可以用來繪製柱形圖,與柱狀圖不同的是,柱形圖的每一個柱子是由線條組成的,更適合用來展示某些數據的變化趨勢。
下面是一個繪製柱形圖的代碼示例:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 生成數據
x = np.arange(4)
y = np.arange(4)
z = np.random.randint(0, 10, size=4)
# 繪製柱形圖
ax.plot(x, y, z, 'bo-', zdir='y')
# 設置軸標籤
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
七、matplotlib3D圖旋轉
matplotlib3D提供了旋轉圖形的方法,可以更好地展示不同角度下的數據分布情況。
下面是一個旋轉圖形的代碼示例:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 生成數據
x = np.arange(4)
y = np.arange(4)
z = np.random.randint(0, 10, size=4)
# 繪製柱形圖
ax.plot(x, y, z, 'bo-', zdir='y')
# 旋轉圖像
for angle in range(0, 360):
ax.view_init(30, angle)
plt.draw()
plt.pause(0.001)
plt.show()
八、matplotlib3D坐標軸美化
matplotlib3D可以美化坐標軸,包括更改標題、標籤、範圍等。
下面是一個美化坐標軸的代碼示例:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 生成X、Y和Z的數據
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X ** 2 + Y ** 2)
Z = np.sin(R)
# 繪製曲面圖
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.hot)
# 美化坐標軸
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
ax.set_xlim(-6, 6)
ax.set_ylim(-6, 6)
ax.set_zlim(-1, 1)
plt.show()
九、matplotlib3D坐標系繪製文字
matplotlib3D還可以用來在圖形中添加文字標註,方便觀察者更好地理解數據分布情況。
下面是一個在坐標系中添加文字標註的代碼示例:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 繪製三維坐標系 ax.text(2, 0, 0, 'x') ax.text(0, 2, 0, 'y') ax.text(0, 0, 2, 'z') plt.show()
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/242035.html
微信掃一掃
支付寶掃一掃