یکی از قابلیتهای قدرتمند کتابخانه Matplotlib در زبان Python، امکان رسم نمودارهای سهبعدی است. این نمودارها برای نمایش دادههای سهبعدی در زمینههای مختلفی مانند فیزیک، مهندسی، آمار، یادگیری ماشین و پردازش تصویر به کار میروند. در این مقاله، نحوه رسم انواع نمودارهای سهبعدی را با مثالهای عملی بررسی میکنیم.
۱. ایجاد یک محور سهبعدی
قبل از رسم هر نمودار سهبعدی، ابتدا باید یک محور سهبعدی (3D Axes) در Matplotlib ایجاد کنیم. این کار با استفاده از mpl_toolkits.mplot3d امکانپذیر است:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# ایجاد یک شکل و محور سهبعدی
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# نمایش نمودار
plt.show()
۲. نمودار سهبعدی خطی (Line Plot)
برای رسم یک خط در فضای سهبعدی، از تابع plot3D استفاده میکنیم:
t = np.linspace(0, 10, 100)
x = np.sin(t)
y = np.cos(t)
z = t
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot3D(x, y, z, 'r')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('نمودار سهبعدی خطی')
plt.show()
توضیح: این کد یک خط سهبعدی را بر اساس توابع sin(t), cos(t) و مقدار t رسم میکند.
۳. نمودار پراکندگی سهبعدی (Scatter Plot)
برای نمایش مجموعهای از نقاط سهبعدی، از scatter3D استفاده میشود:
x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter3D(x, y, z, c=z, cmap='jet')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('نمودار پراکندگی سهبعدی')
plt.show()
توضیح: نقاط با استفاده از مقادیر تصادفی در سه بعد نمایش داده شدهاند و رنگ هر نقطه بر اساس مقدار z تعیین شده است.
۴. نمودار سطحی (Surface Plot)
برای نمایش یک سطح سهبعدی، از plot_surface استفاده میشود:
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('نمودار سطحی')
plt.show()
توضیح: این نمودار یک سطح بر اساس تابع sin(sqrt(x² + y²)) را نمایش میدهد.
۵. نمودار مشبک (Wireframe Plot)
برای نمایش ساختار مشبک یک سطح، از plot_wireframe استفاده میشود:
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(X, Y, Z, color='black')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('نمودار مشبک')
plt.show()
توضیح: این نمودار مانند نمودار سطحی است اما فقط ساختار شبکهای آن را نمایش میدهد.
۶. نمودار میلهای سهبعدی (3D Bar Chart)
برای نمایش دادهها بهصورت میلهای، از bar3d استفاده میشود:
x = np.arange(5)
y = np.arange(5)
X, Y = np.meshgrid(x, y)
X = X.flatten()
Y = Y.flatten()
Z = np.zeros_like(X)
dx = dy = 0.5
dz = np.random.rand(len(X))
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.bar3d(X, Y, Z, dx, dy, dz, shade=True)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('نمودار میلهای سهبعدی')
plt.show()
توضیح: این کد یک نمودار میلهای سهبعدی تصادفی را نمایش میدهد.
نتیجهگیری
در این مقاله، چندین نوع نمودار سهبعدی در Matplotlib را بررسی کردیم. بسته به نوع داده و نیاز، میتوان از خطی، پراکندگی، سطحی، مشبک و میلهای استفاده کرد. این قابلیتها برای تحلیل دادههای سهبعدی بسیار مفید هستند.
سوال یا نظری دارید؟ در بخش کامنتها به اشتراک بگذارید!
