পাইথনে স্ক্যাটার প্লট এবং রঙিন ম্যাপিং


91

আমার কাছে বিন্যাসী অ্যারেতে x এবং y পয়েন্টের ব্যাপ্তি রয়েছে। যারা x (t) এবং y (t) প্রতিনিধিত্ব করেন যেখানে t = 0 ... T-1

আমি ব্যবহার করে একটি ছড়িয়ে ছিটিয়ে প্লট করছি

import matplotlib.pyplot as plt

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

আমি সময়ের প্রতিনিধিত্বকারী একটি রঙিন মানচিত্র রাখতে চাই (অতএব নিমপী অ্যারেগুলিতে সূচকের উপর নির্ভর করে পয়েন্টগুলি রঙ করা)

এটি করার সহজতম উপায় কী?

উত্তর:


170

এখানে একটি উদাহরণ

import numpy as np
import matplotlib.pyplot as plt

x = np.random.rand(100)
y = np.random.rand(100)
t = np.arange(100)

plt.scatter(x, y, c=t)
plt.show()

এখানে আপনি সূচকের উপর ভিত্তি করে রঙ নির্ধারণ করছেন tযা এটির একটি অ্যারে মাত্র [1, 2, ..., 100]এখানে চিত্র বর্ণনা লিখুন

সম্ভবত একটি সহজ-বোঝার উদাহরণটি হ'ল সামান্য সহজ

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(100)
y = x
t = x
plt.scatter(x, y, c=t)
plt.show()

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

দ্রষ্টব্য যে আপনি যে অ্যারেটি পাস করেছেন cতাতে কোনও নির্দিষ্ট ক্রম বা প্রকারের দরকার নেই, অর্থাত এই উদাহরণগুলির মতো এটি বাছাই বা পূর্ণসংখ্যার প্রয়োজন হয় না। প্লট করার রুটিনটি রঙিন মানচিত্রকে এমনভাবে স্কেল করবে যে নূন্যতম / সর্বাধিক মানগুলি cবর্ণম্যাপের নীচে / শীর্ষের সাথে সামঞ্জস্য করে।

কালারম্যাপস

আপনি যোগ করে রঙম্যাপটি পরিবর্তন করতে পারেন

import matplotlib.cm as cm
plt.scatter(x, y, c=t, cmap=cm.cmap_name)

আমদানি matplotlib.cmalচ্ছিক কারণ আপনি কলারম্যাপগুলিকে cmap="cmap_name"পাশাপাশি কল করতে পারেন । রঙিনম্যাপগুলির একটি রেফারেন্স পৃষ্ঠা রয়েছে যা প্রতিটি দেখতে কেমন তা দেখাচ্ছে। এছাড়াও জেনে রাখুন যে আপনি রঙিন ম্যাপটিকে কেবল এটি হিসাবে কল করে বিপরীত করতে পারেন cmap_name_r। তাই হয়

plt.scatter(x, y, c=t, cmap=cm.cmap_name_r)
# or
plt.scatter(x, y, c=t, cmap="cmap_name_r")

কাজ করবে. উদাহরণগুলি হ'ল "jet_r"বা cm.plasma_r। নতুন 1.5 রঙিনম্যাপ ভাইরাস সহ একটি উদাহরণ এখানে দেওয়া হয়েছে:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(100)
y = x
t = x
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.scatter(x, y, c=t, cmap='viridis')
ax2.scatter(x, y, c=t, cmap='viridis_r')
plt.show()

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

কালারবারস

আপনি ব্যবহার করে একটি রঙবার যুক্ত করতে পারেন

plt.scatter(x, y, c=t, cmap='viridis')
plt.colorbar()
plt.show()

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

মনে রাখবেন আপনি যদি পরিসংখ্যান এবং সাবপ্লটগুলি স্পষ্টভাবে ব্যবহার করেন (যেমন fig, ax = plt.subplots()বা ax = fig.add_subplot(111)), একটি রঙবার যুক্ত করা আরও কিছুটা জড়িত হতে পারে। ভাল উদাহরণগুলি একটি একক সাবপ্লট কালারবারের জন্য এবং এখানে 2 টি সাবপ্লট 1 কালারবারের জন্য পাওয়া যাবে


4
plt.colorbar()কমান্ডটি দিয়ে আপনি রঙগুলির জন্য একটি কিংবদন্তি পেতে পারেন ।
ড্রিভিকো

কোডটি এখানে পরিবর্তিত হয়েছে বলে মনে হচ্ছে .c
ক্রিস

@ cmarti1138 আমি নিশ্চিত যে আপনি কী বলতে চাইছেন না cm.colormap_nameএবং এতে cm.cmapnameপ্রকৃত ভেরিয়েবলগুলিও নয় matplotlib.cm; এটি কেবল cm.jetবা এর জন্য সিউডোকোড cm.veridis_r, ইত্যাদি
wflynny

ইতিমধ্যে প্লট করা বক্ররেখার তালিকা cmapবা cতালিকা পরিবর্তন করার কোনও উপায় আছে কি ?
গিমোতে

10

উপরে wflynny এর উত্তর যোগ করতে, আপনি এখানে উপলভ্য রঙম্যাপগুলি খুঁজে পেতে পারেন

উদাহরণ:

import matplotlib.cm as cm
plt.scatter(x, y, c=t, cmap=cm.jet)

বা বিকল্পভাবে,

plt.scatter(x, y, c=t, cmap='jet')

3

সাবপ্লট কালারবার

স্ক্রেটার সহ সাবপ্লটগুলির জন্য, আপনি একটি গৌণ চিত্রের সাহায্যে "ম্যাপেবল" তৈরি করে এবং তারপরে এটি আপনার মূল প্লটটিতে যুক্ত করে আপনার অক্ষগুলিতে একটি রঙবার বার ঠাট করতে পারেন।

উপরোক্ত উদাহরণের ধারাবাহিকতা হিসাবে:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)
y = x
t = x
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.scatter(x, y, c=t, cmap='viridis')
ax2.scatter(x, y, c=t, cmap='viridis_r')


# Build your secondary mirror axes:
fig2, (ax3, ax4) = plt.subplots(1, 2)

# Build maps that parallel the color-coded data
# NOTE 1: imshow requires a 2-D array as input
# NOTE 2: You must use the same cmap tag as above for it match
map1 = ax3.imshow(np.stack([t, t]),cmap='viridis')
map2 = ax4.imshow(np.stack([t, t]),cmap='viridis_r')

# Add your maps onto your original figure/axes
fig.colorbar(map1, ax=ax1)
fig.colorbar(map2, ax=ax2)
plt.show()

কলরবার সহ স্কেটার সাবপ্লট ots

নোট করুন যে আপনি এমন একটি গৌণ চিত্রও আউটপুট করবেন যা আপনি উপেক্ষা করতে পারেন।

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