ম্যাটপ্ল্লোব স্ক্যাটারপ্ল্লট; তৃতীয় ভেরিয়েবলের একটি ফাংশন হিসাবে রঙ


152

আমি একটি স্ক্যাটারপ্ল্লট তৈরি করতে চাই (ম্যাটপ্ল্লোব ব্যবহার করে) যেখানে পয়েন্টগুলি তৃতীয় ভেরিয়েবল অনুসারে শেড করা হয়। আমি এর সাথে খুব ঘনিষ্ঠ হয়েছি:

plt.scatter(w, M, c=p, marker='s')

যেখানে ডাব্লু এবং এম হ'ল ডেটাপয়েন্ট এবং পি সেই পরিবর্তনশীল যা আমি সম্মানের সাথে শেড করতে চাই।
তবে আমি রঙের পরিবর্তে গ্রেস্কেল এ এটি করতে চাই। কেউ সাহায্য করতে পারেন?

উত্তর:


156

ম্যানুয়ালি রঙগুলি সেট করার দরকার নেই। পরিবর্তে, একটি গ্রেস্কেল বর্ণমালা নির্দিষ্ট করুন ...

import numpy as np
import matplotlib.pyplot as plt

# Generate data...
x = np.random.random(10)
y = np.random.random(10)

# Plot...
plt.scatter(x, y, c=y, s=500)
plt.gray()

plt.show()

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

অথবা, আপনি যদি রঙিন মানচিত্রের বিস্তৃত পরিসর পছন্দ করেন তবে আপনি cmapকোয়ার্গও নির্দিষ্ট করতে পারেন scatter। এগুলির যে কোনওটির বিপরীত সংস্করণটি ব্যবহার করতে, কেবল সেগুলির কোনওটির " _r" সংস্করণ নির্দিষ্ট করুন। যেমন gray_rপরিবর্তে gray। সেখানে বিভিন্ন গ্রেস্কেল colormaps আগে থেকেই তৈরি করা (যেমন হয় gray, gist_yarg, binary, ইত্যাদি)।

import matplotlib.pyplot as plt
import numpy as np

# Generate data...
x = np.random.random(10)
y = np.random.random(10)

plt.scatter(x, y, c=y, s=500, cmap='gray')
plt.show()

1
ধন্যবাদ! মোট ওজনের একটি নির্দিষ্ট পরিমাণ সমন্বিত এই পয়েন্টগুলির চারপাশে রূপক আঁকানোর উপায় কি আছে?
21:41

6
mpl.cmসরাসরি হিসাবে উপলব্ধ plt.cm
heltonbiker

@ থমাস কললেট: যদি আপনি রূপক আঁকতে চান তবে আপনাকে ডেটাগুলি বিভক্ত করতে হবে পয়েন্টগুলিকে 2 ডি ম্যাট্রিক্সের পয়েন্ট তৈরি করতে হবে, তারপরে এটি ব্যবহার করার পরিকল্পনা করুন plt.contour()বা plt.contourf()- তবে এটি আলাদা প্রশ্ন
জাক

আপনি কীভাবে কিংবদন্তিতে লেবেল যুক্ত করতে পারেন? একটানা সংখ্যার সাথে এই ক্ষেত্রে, আপনি রঙিনবারটি ব্যবহার করবেন বলে আমার সন্দেহ। বিযুক্ত মূল্যবোধের ক্ষেত্রে কী হবে? উদাহরণস্বরূপ আমি আমার তিনটি বিভাগের জন্য কিংবদন্তিতে 3 টি লেবেল যুক্ত করতে পারি?
নাট

26

ম্যাটপ্লোটিলেবতে ধূসর রঙগুলি 0-1 এর মধ্যে একটি সংখ্যাসূচক মানের স্ট্রিং হিসাবে দেওয়া যেতে পারে।
উদাহরণ স্বরূপc = '0.1'

তারপরে আপনি এই তৃতীয় ভেরিয়েবলকে এই সীমার অভ্যন্তরের মানটিতে রূপান্তর করতে পারেন এবং এটি আপনার পয়েন্টগুলিকে রঙ করতে ব্যবহার করতে পারেন।
নিম্নলিখিত উদাহরণে আমি বিন্দুর y অবস্থানটি মান হিসাবে রঙ নির্ধারণ করে হিসাবে ব্যবহার করেছি:

from matplotlib import pyplot as plt

x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [125, 32, 54, 253, 67, 87, 233, 56, 67]

color = [str(item/255.) for item in y]

plt.scatter(x, y, s=500, c=color)

plt.show()

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


3
রেকর্ডের জন্য, আপনি cচতুর্থ কলামে আলফা মান সহ আর্গুমেন্ট হিসাবে একটি (এন, 4) আকারযুক্ত অ্যারে সরবরাহ করেন তবে আপনি রঙিন্যাপ হিসাবে ALPHA প্রয়োগ করতে পারেন । যদি তৃতীয় ভেরিয়েবলটি জেড, সাথে থাকে shape=(n,1)তবে colors = numpy.hstack((numpy.zeros_like(z), numpy.zeros_like(z), numpy.ones_like(z), z/z.max()))খুব সুন্দর প্রভাব দেয় (অবশ্যই এটি টুইট করা যেতে পারে)।
হেলটনবাইকার

আমি একটি ত্রুটি পেয়েছি: 'rgba অনুক্রমের দৈর্ঘ্য 3 বা 4 হওয়া উচিত'
ম্যাটকোক্রেন

1
@ ম্যাটক্ল্যামবস আমার সন্দেহ হয় আপনি উদাহরণ হিসাবে plt.scatter এর চেয়ে plt.plot কল করছেন।
স্ম্যাশব্রো

আপনি কীভাবে এই প্লটে একটি রঙবার যুক্ত করবেন?
ফ্যাকফি 3'16

2
@ ফ্যাকফি এটি plt.colorbar()করবে
ম্যাথিউ সেভেজ

10

কখনও কখনও আপনাকে এক্স-ভ্যালু কেসের উপর ভিত্তি করে রঙের প্ল্যাট করতে হবে । উদাহরণস্বরূপ, আপনার কাছে 3 ধরণের ভেরিয়েবল এবং কিছু ডেটা পয়েন্ট সহ একটি ডেটাফ্রেম থাকতে পারে। এবং আপনি নিম্নলিখিত করতে চান,

  • রেডে শারীরিক পরিবর্তনশীল 'এ' এর সাথে সম্পর্কিত প্লট পয়েন্ট।
  • ব্লুতে শারীরিক চলক 'বি' এর সাথে সম্পর্কিত প্লট পয়েন্ট points
  • গ্রিনে শারীরিক পরিবর্তনশীল 'সি' এর সাথে সম্পর্কিত প্লট পয়েন্ট।

এই ক্ষেত্রে, আপনাকে একটি তালিকা হিসাবে x বর্ণগুলি সম্পর্কিত রঙের নামের সাথে মানচিত্র তৈরি করতে সংক্ষিপ্ত ফাংশনে লিখতে হবে এবং তারপরে সেই তালিকাটিতে plt.scatterকমান্ডটি প্রেরণ করতে হবে ।

x=['A','B','B','C','A','B']
y=[15,30,25,18,22,13]

# Function to map the colors as a list from the input list of x variables
def pltcolor(lst):
    cols=[]
    for l in lst:
        if l=='A':
            cols.append('red')
        elif l=='B':
            cols.append('blue')
        else:
            cols.append('green')
    return cols
# Create the colors list using the function above
cols=pltcolor(x)

plt.scatter(x=x,y=y,s=500,c=cols) #Pass on the list created by the function here
plt.grid(True)
plt.show()

এক্স ভেরিয়েবলের ক্রিয়াকলাপ হিসাবে স্ক্র্যাটার প্লট রঙ করুন


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