পাইথনে 3 ডি স্ক্যাটার প্লট কীভাবে তৈরি করবেন?


93

আমার কাছে বর্তমানে একটি এনএক্স 3 ম্যাট্রিক্স অ্যারে রয়েছে। আমি তিনটি কলামকে তিনটি অক্ষ হিসাবে প্লট করতে চাই। আমি এটা কিভাবে করবো?

আমি গুগল করেছি এবং লোকেরা মতলব ব্যবহারের পরামর্শ দিয়েছে , তবে এটি বোঝার সাথে আমার সত্যিই খুব কষ্ট হচ্ছে। আমারও এটি একটি বিচ্ছুরিত প্লট হতে হবে।

কেউ আমাকে শিখিয়ে দিতে পারেন?


4
আপনি কি প্লটটি করার জন্য একটি অ্যাপ্লিকেশন সন্ধান করছেন, বা আপনি কী কোড লিখতে চান (যে কোনও ভাষায়) যে প্লটটি আঁকবে?
নিলস পিপেনব্রিংক

অ্যাসিম্পোটোট ব্যবহার করুন - এটি নিখরচায়, শক্তিশালী এবং গুণমানটি দুর্দান্ত!
হামিশ গ্রুবিজন

4
আপনার যদি অ্যারে থাকে তবে আমি ধরে নিই যে আপনার কাছে একটি প্রোগ্রাম রয়েছে এবং এই অ্যারে এটির একটি অংশ। এটি কোন ধরণের প্রোগ্রাম (ভাষা) তা ইঙ্গিত করে আপনাকে সহায়তা করার সুযোগ দিন!
কার্ল স্মোট্রিক্জ

আমি তখনও অ্যাসিপোটোট (একটি lib হিসাবে) ব্যবহার করব, বা এর জন্য কেবল ইনপুট ফাইল তৈরি করব। এটি আশ্চর্যজনক আউটপুট মানের দেখুন!
হামিশ গ্রুবিজন

4
যদি এটি একটি n3 টি অ্যারের হয় তবে আপনি 3 মাত্রায় একটি বক্ররেখার প্লট পাবেন। "3-ডি প্লট" এর জন্য আপনার একটি n x m x lঅ্যারে লাগবে । আপনি কি একটি বক্ররেখা চান, যে কোনও একটি টুপলটি (x,y,z)বক্ররেখার একটি বিন্দুর প্রতিনিধিত্ব করে?
অলোক সিংহল

উত্তর:


162

আপনি এই জন্য matplotlib ব্যবহার করতে পারেন । matplotlib এর একটি এমপ্লট 3 ডি মডিউল রয়েছে যা আপনি যা চান ঠিক তা করবে।

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()

উপরের কোডটি একটি চিত্র তৈরি করে:

matplotlib 3 ডি চিত্র


11
সুন্দর সমাধান। plt.zlabel('zlabel')অভ্যাস কাজ নোট করুন । Z- র লেবেল লাগাতে অক্ষ আপনি ব্যবহার করতে প্রয়োজন: ax.set_zlabel('Z')
ইওনাটান সিমসন

8

এটি আমার জন্য নিম্নলিখিত কোডটি ব্যবহার করে:

# 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()

যখন এক্স_সিসো আমার 3-ডি অ্যারে এবং এক্স_ওয়ালস, ওয়াই_ওয়ালস, জেড_ওয়ালসের জন্য আমি সেই অ্যারে থেকে 1 টি কলাম / অক্ষটি অনুলিপি / ব্যবহার করেছি এবং যথাক্রমে সেই পরিবর্তনগুলি / অ্যারেগুলিকে নির্ধারিত করেছি।


1

পরিবর্তে অ্যাসিপোটোট ব্যবহার করুন!

এটি দেখতে এটির মতো দেখতে:

http://asymptote.sourceforge.net/gallery/3D%20رافs/helix.pdf

এই কোডটি: http://asyptote.sourceforge.net/gallery/3D%20رافs / helix.asy

অ্যাসিম্পোটোটও ডেটা ফাইলগুলিতে পড়তে পারে।

এবং সম্পূর্ণ গ্যালারী: http://asyptote.sourceforge.net/gallery/

পাইথনের মধ্যে থেকে অ্যাসিম্পোটোট ব্যবহার করতে:

http://www.tex.ac.uk/tex-archive/ographicics/asyompote/base/asyptote.py


4
আমি আশঙ্কা করছি যে এই উত্তরের লিঙ্কগুলির বেশিরভাগ লিঙ্ক এখন = (
অ্যালকেনেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.