一、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