পাইথন ম্যাটপ্লোটিলেব (x, y) স্থানাঙ্কের একটি তালিকা স্থাপন করা


109

আমার কাছে জোড়গুলির একটি তালিকা রয়েছে (a, b)যা আমি matplotlibপাইথনকে প্রকৃত xy স্থানাঙ্ক হিসাবে প্লট করতে চাই । বর্তমানে এটি দুটি প্লট তৈরি করছে, যেখানে তালিকার সূচীটি এক্স-কো-অর্ডিনেট দেয় এবং প্রথম প্লটের y মানগুলি জোড়গুলিতে as এবং দ্বিতীয় প্লটের y মানগুলি জোগুলিতে bs হয়।

স্পষ্ট করার জন্য, আমার ডেটাটি এমন দেখাচ্ছে: li = [(a,b), (c,d), ... , (t, u)] আমি একটি ওয়ান-লাইনার করতে চাই যা কেবলমাত্র ভুলকে কল করে plt.plot()। আমার যদি ওয়ান-লাইনারের প্রয়োজন না হয় আমি তুচ্ছভাবে করতে পারি:

xs = [x[0] for x in li]
ys = [x[1] for x in li]
plt.plot(xs, ys)
  • এই জোড়গুলির সাথে এক্সআই স্থানাঙ্ক হিসাবে প্লট করতে আমি কীভাবে ম্যাটপ্লটলিব পেতে পারি?

সব ধরনের সাহায্য করার জন্য ধন্যবাদ!

উত্তর:


180

এই উদাহরণ হিসাবে :

import numpy as np
import matplotlib.pyplot as plt

N = 50
x = np.random.rand(N)
y = np.random.rand(N)

plt.scatter(x, y)
plt.show()

উত্পাদন করবে:

এখানে চিত্র বর্ণনা লিখুন

তালিকায় জোড় থেকে আপনার ডেটা আনপ্যাক করতে ব্যবহার করুন zip:

x, y = zip(*li)

সুতরাং, ওয়ান-লাইনার:

plt.scatter(*zip(*li))

7
2-কলাম numpy অ্যারের জন্য plt.scatter( * xy.T )কাজ করে: সংক্ষিপ্ত এবং জন্য অস্পষ্টx, y = xy.T; plt.scatter( x, y )
ডেনিস

2
x, y = zip(*li)সত্যিই মার্জিত পাইথন কোড! আমি প্রতিটি লাইনে একটি লিখিত সংকোচনের সাথে কোডের আরও সোজা-ফরোয়ার্ড দুটি লাইন করে যাচ্ছি (মূল প্রশ্নের মতো)
ট্রেভর বয়েড স্মিথ

1
plt.scatterপ্রশ্নটির সাথে এলোমেলো উদাহরণের কী সম্পর্ক রয়েছে তা বিভ্রান্তির মতো ।
জেমসডলিন

36

আপনার কাছে যদি নম্রি অ্যারে থাকে তবে আপনি এটি করতে পারেন:

import numpy as np
from matplotlib import pyplot as plt

data = np.array([
    [1, 2],
    [2, 3],
    [3, 6],
])
x, y = data.T
plt.scatter(x,y)
plt.show()

1
সুতরাং np.arrayএর data=np.array([[x1,y1],[x2,y2],etc.])ব্যবহার ও ব্যবহারের কোনও উপায় নেই plt.plot(data)। আমি সবসময় অ্যারে অ্যারের পরিবর্তে দুটি অ্যারে দিতে হবে?
সর্বাধিক কোপলান

1
@ ম্যাক্সকপ্লান, এটি ঠিক, তবে আপনি plt.plot(*data.T)উপরের মতো একই ব্যবহার করতে পারবেন তবে মধ্যবর্তী পদক্ষেপটি এড়িয়ে যেতে পারেন ।
Zweedaend

6

আপনি যদি তালিকার সমস্ত পয়েন্টকে যুক্ত করে একটি একক লাইন প্লট করতে চান

plt . plot ( li [ : ] )

plt . show ( )

এটি তালিকার সমস্ত জুটি কার্টেসিয়ান বিমানের পয়েন্ট হিসাবে তালিকার শুরু থেকে শেষ অবধি সংযোগকারী একটি লাইন তৈরি করবে plot আমি আশা করি এটি আপনি চেয়েছিলেন


3
তিনি একটি লাইন প্লট করতে চাননি, তিনি একটি "ওয়ান-লাইনার" (কোডের একটি একক লাইন) দিয়ে প্লট করতে চেয়েছিলেন। তিনি যে উত্তরটি খুঁজছিলেন (এবং 3 বছর আগে পেয়েছিলেন) তা ব্যবহার করা হয়েছিল scatter()
ডার্টমাউথ

7
যেহেতু এই উত্তরটি সেই অবস্থার অধীনে কাজ করে যেটি বোঝায় যে "যদি আপনি তালিকার সমস্ত পয়েন্টকে যুক্ত করে একটি একক লাইন প্লট করতে চান", তবে এটি কি সত্যই ডাউন ভোটের যোগ্য?
গাথাইড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.