3D 散布圖
這篇教學會介紹如何使用 matplotlib 將圖表轉換成 3D 的顯示模式,並在 3D 圖表裡顯示資料的 3D 散布圖。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
import matplotlib
要進行本篇的範例,必須先載入 matplotlib 函式庫的 pyplot 模組,範例將其獨立命名為 plt。
import matplotlib.pyplot as plt
啟用 3D 圖表
如果使用 fig = plt.figure() 的方式建立圖表,只要額外設定 projection='3d',就能將圖表的顯示模式設定為 3D 圖表。
參考:使用 3D 圖表
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(6,6))
ax = plt.subplot(projection='3d') # 設定為 3D 圖表
plt.show()
加入 3D 散布圖
使用 scatter() 方法,額外加入 z 的參數,就能在 3D 圖表中畫出散布圖。
import matplotlib.pyplot as plt import random fig = plt.figure(figsize=(8,6)) ax = plt.subplot(projection='3d') x = [random.randint(0,100) for i in range(200)] # 取得 200 個 0~100 的隨機整數 y = [random.randint(0,100) for i in range(200)] # 取得 200 個 0~100 的隨機整數 z = [random.randint(0,100) for i in range(200)] # 取得 200 個 0~100 的隨機整數 ax.scatter(x,y,z,s=50) plt.show()
多組數據的 3D 散布圖
如果有多組數據,只要重複執行 scatter() 的方法,就能夠在圖表中加入不同資料的 3D 散布圖。
import matplotlib.pyplot as plt
import random
fig = plt.figure(figsize=(10,8))
ax = plt.subplot(projection='3d')
x = [random.randint(0,100) for i in range(150)]
y = [random.randint(0,100) for i in range(150)]
z = [random.randint(0,100) for i in range(150)]
ax.scatter(x,y,z,s=90,c=z,cmap='Reds')
ax.scatter(y,z,x,s=90,c=x,cmap='Blues')
ax.scatter(z,x,y,s=90,c=y,cmap='Greens')
plt.show()
import matplotlib.pyplot as plt
import random
fig = plt.figure(figsize=(10,8))
ax = plt.subplot(projection='3d')
x1 = [random.randint(0,100) for i in range(5000)]
x2 = [random.randint(100,200) for i in range(5000)]
x3 = [random.randint(200,300) for i in range(5000)]
y = [random.randint(0,100) for i in range(5000)]
z = [random.randint(0,100) for i in range(5000)]
ax.scatter(x1,y,z,s=30,c=z,cmap='Reds')
ax.scatter(x2,y,z,s=30,c=z,cmap='Blues')
ax.scatter(x3,y,z,s=30,c=z,cmap='Greens')
plt.show()
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~