मैं इस पर तीन सर्कल के साथ matplotlib में एक 3 डी प्लॉट बनाने की कोशिश कर रहा हूं, प्रत्येक उत्पत्ति पर केंद्रित है और 1 के त्रिज्या के साथ, विभिन्न दिशाओं में इशारा करते हुए - उदाहरण के लिए त्रिज्या 1 के क्षेत्र को चित्रित करने के लिए।matplotlib में एक 3 डी पैच संग्रह कैसे प्लॉट करें?
2 डी में मैं एक सर्कल पैच संग्रह कर दूंगा और इसे अक्ष में जोड़ दूंगा। 3 डी में मुझे पैच को बिल्कुल दिखाने में परेशानी हो रही है, अकेले उन्हें अलग-अलग दिशाओं में उन्मुख करने दें।
import matplotlib
import matplotlib.pyplot as P
import mpl_toolkits.mplot3d as M3
fig = P.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d')
circles = matplotlib.collections.PatchCollection(
[matplotlib.patches.Circle((0, 0), 1) for count in range(3)],
offsets=(0, 0))
M3.art3d.patch_collection_2d_to_3d(circles, zs=[0], zdir='z')
ax.add_collection(circles)
P.show()
इस कार्यक्रम चल रहा है पैच के चेहरे रंग के साथ नीले, अर्थात पूरे भूखंड खिड़की भरता है, कोई फर्क नहीं पड़ता कि कैसे मैं भूखंड बारी बारी से। अगर मैं PatchCollection()
कॉल में facecolor='none'
सेट करता हूं, तो खाली Axes3D
दिखाता है।
बातें मैं कोशिश की है:
- अगर मैं एक
CircleCollection
बजायPatchCollection
एक के उपयोग करते हैं, कोई पैच बिल्कुल ही दिखाई। कॉल में
zs
पैरामीटर विषम है; मैं डाल करने के लिए उम्मीद करेंगे या तोzs=0
(एक z निर्देशांक तीनों पैच के लिए) याzs=[0,0,0]
(प्रत्येक पैच के लिए एक अलग z निर्देशांक), लेकिन उन दोनों के एक त्रुटि फेंक:ValueError: setting an array element with a sequence.
उन्मुख करने के लिए अलग-अलग पैच, मैं
zdir=['x', 'y', 'z']
जैसे कुछ पास करने में सक्षम होने की अपेक्षा करता हूं लेकिन परिणाम अलग नहीं हैं चाहे मैं इसे पास करता हूं या'z'
या['z']
।- मैं भी 2 डी 3 डी के लिए से पैच संग्रह परिवर्तित करने की बजाय
ax.add_collection3d(circles, zs=[0, 0, 0], zdir=['x', 'y', 'z'])
ऐसा करने में सक्षम होने की उम्मीद होता, लेकिन वह भी एक त्रुटि फेंकता है:AttributeError: 'Patch3DCollection' object has no attribute 'set_sort_zpos'
@ लिलिथ का जवाब एक उत्कृष्ट वैकल्पिक दृष्टिकोण है, क्या कोई मुझे बता सकता है कि मेरा दृष्टिकोण क्यों काम नहीं करता? – ptomato