Matplotlib में (x, y, z) टपल्स की सूची से 3D सरफेस प्लॉट करने के लिए डेटा को अनपैक करें, मेशग्रिड बनाएं, और plot_surface() का उपयोग करें।
चरण
- फिगर आकार सेट करें और पैडिंग समायोजित करें
- टपल्स की सूची बनाएं
- टपल्स की सूची से
x, y, zडेटा बिंदु निकालें np.meshgrid()से निर्देशांक मैट्रिक्स प्राप्त करें- सरफेस प्लॉट के लिए
hडेटा बिंदु प्राप्त करें (उदाहरण:h = x² + y²) - नया फिगर बनाएं या मौजूदा सक्रिय करें
projection='3d'के साथ वर्तमान एक्सिस प्राप्त करें- सरफेस प्लॉट बनाएं
plt.show()से प्रदर्शित करें
उदाहरण
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
# टपल्स की सूची: (x, y, z)
data = [(1, 3, 2), (3, 5, 2), (4, 7, 4), (8, 7, 4),
(3, 6, 1), (3, 9, 0), (3, 9, 0)]
# अनपैक करें
x, y, z = zip(*data)
# मेशग्रिड के लिए अद्वितीय x, y मान
x_unique = np.unique(x)
y_unique = np.unique(y)
x_grid, y_grid = np.meshgrid(x_unique, y_unique)
# सरफेस ऊंचाई: h = x² + y² (उदाहरण फंक्शन)
h = x_grid ** 2 + y_grid ** 2
fig = plt.figure()
ax = fig.gca(projection='3d')
# सरफेस प्लॉट
ax.plot_surface(x_grid, y_grid, h, cmap='plasma', alpha=0.8)
# मूल डेटा बिंदु भी प्लॉट करें
ax.scatter(x, y, z, color='red', s=50, label='मूल डेटा')
ax.legend()
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('टपल्स से 3D सरफेस')
plt.show()
आउटपुट
3D सरफेस प्लॉट h = x² + y² के साथ, मूल डेटा बिंदु लाल डॉट्स के रूप में ओवरले किए गए।
महत्वपूर्ण नोट
मूल कोड में x, y = np.meshgrid(x, y) गलत है क्योंकि x और y में डुप्लिकेट मान हैं। सही दृष्टिकोण np.unique() का उपयोग करके अद्वितीय मानों से ग्रिड बनाना है, फिर इंटरपोलेशन/ग्रिडडेटा का उपयोग करना है।
सही दृष्टिकोण: griddata से इंटरपोलेशन
from scipy.interpolate import griddata
# अनियमित डेटा को नियमित ग्रिड पर इंटरपोलेट करें
x_unique = np.linspace(min(x), max(x), 50)
y_unique = np.linspace(min(y), max(y), 50)
x_grid, y_grid = np.meshgrid(x_unique, y_unique)
z_grid = griddata((x, y), z, (x_grid, y_grid), method='cubic')
ax.plot_surface(x_grid, y_grid, z_grid, cmap='plasma')
मुख्य बिंदु
zip(*data)टपल्स की सूची को तीन सूचियों में अनपैक करता है- अनियमित डेटा के लिए
griddata(SciPy) आवश्यक है method='cubic'स्मूथ सरफेस देता है,'linear'तेज़- सरफेस प्लॉट के लिए नियमित ग्रिड (
meshgrid) आवश्यक है