كيف تصنع مؤامرة مبعثرة ثلاثية الأبعاد في بيثون؟
-
22-09-2019 - |
سؤال
لدي حاليا مجموعة مصفوفة NX3. أريد رسم الأعمدة الثلاثة على أنها ثلاثة محور. كيف أقوم بذلك؟
لقد غوغل واقترح الناس استخدام ماتلاب, ، لكني أواجه صعوبة في فهم ذلك. أحتاج أيضًا إلى أن تكون مؤامرة مبعثرة.
هل يمكن لأحد أن يعلمني؟
المحلول
يمكنك استخدام Matplotlib لهذا. Matplotlib لديه Mplot3d الوحدة النمطية التي ستفعل بالضبط ما تريد.
from matplotlib import pyplot
from mpl_toolkits.mplot3d import Axes3D
import random
fig = pyplot.figure()
ax = Axes3D(fig)
sequence_containing_x_vals = list(range(0, 100))
sequence_containing_y_vals = list(range(0, 100))
sequence_containing_z_vals = list(range(0, 100))
random.shuffle(sequence_containing_x_vals)
random.shuffle(sequence_containing_y_vals)
random.shuffle(sequence_containing_z_vals)
ax.scatter(sequence_containing_x_vals, sequence_containing_y_vals, sequence_containing_z_vals)
pyplot.show()
الرمز أعلاه يولد رقمًا مثل:
نصائح أخرى
استخدم الكود التالي الذي عملت بالنسبة لي:
# Create the figure
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# Generate the values
x_vals = X_iso[:, 0:1]
y_vals = X_iso[:, 1:2]
z_vals = X_iso[:, 2:3]
# Plot the values
ax.scatter(x_vals, y_vals, z_vals, c = 'b', marker='o')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
plt.show()
على الرغم من أن X_ISO هو صفيف ثلاثي الأبعاد الخاص بي وللـ x_vals ، y_vals ، z_vals قمت بنسخه/استخدمه 1 عمود/محور من تلك الصفيف وتم تعيينه لتلك المتغيرات/المصفوفات على التوالي.
استخدم مقارب بدلاً من ذلك!
هذا ما يمكن أن يبدو عليه:
http://aspresto.sourceforge.net/gallery/3d٪20graphs/helix.pdf
هذا هو الرمز:http://aspremptote.sourceforge.net/gallery/3d٪20graphs/helix.asy
يمكن أن تقارب المقاربة أيضًا في ملفات البيانات.
والمعرض الكامل:http://aspremptote.sourceforge.net/gallery/
لاستخدام المقاربة من داخل بيثون:
http://www.tex.ac.uk/tex-archive/graphics/aspraptote/base/asptote.py