বিচ্ছুরণের জন্য matplotlib রঙবার bar


92

আমি ডেটা দিয়ে কাজ করছি যে ডেটা আছে 3 প্লট পরামিতি: এক্স, ওয়াই, সি। আপনি কীভাবে একটি বিক্ষিপ্ত প্লটের জন্য একটি কাস্টম রঙ মান তৈরি করবেন?

এই উদাহরণটি প্রসারিত করে আমি করার চেষ্টা করছি:

import matplotlib
import matplotlib.pyplot as plt
cm = matplotlib.cm.get_cmap('RdYlBu')
colors=[cm(1.*i/20) for i in range(20)]
xy = range(20)
plt.subplot(111)
colorlist=[colors[x/2] for x in xy] #actually some other non-linear relationship
plt.scatter(xy, xy, c=colorlist, s=35, vmin=0, vmax=20)
plt.colorbar()
plt.show()

কিন্তু ফলাফল হয় TypeError: You must first set_array for mappable

উত্তর:


201

স্ক্যাটার 1 এ ম্যাটপ্লটলিব ডক্স থেকে :

সিএম্যাপ কেবল তখনই ব্যবহৃত হয় যদি সি ফ্লোটের অ্যারে হয়

তাই কালারলিস্টে এখন আপনার যেমন টিউপস রয়েছে তেমন তালিকার চেয়ে ফ্লোটের তালিকা হওয়া দরকার। plt.colorbar () একটি mappable অবজেক্ট চায় যেমন সার্কেল কালেকশন যা plt.scatter () দেয়। vmin এবং vmax এর পরে আপনার রঙের সীমাটি নিয়ন্ত্রণ করতে পারে। ভিমন / ভিএমএক্সের বাইরের জিনিসগুলি শেষের পয়েন্টগুলির রঙ পায়।

এটি আপনার পক্ষে কীভাবে কাজ করে?

import matplotlib.pyplot as plt
cm = plt.cm.get_cmap('RdYlBu')
xy = range(20)
z = xy
sc = plt.scatter(xy, xy, c=z, vmin=0, vmax=20, s=35, cmap=cm)
plt.colorbar(sc)
plt.show()

চিত্র উদাহরণ


আমি চেষ্টা করেছিলাম এবং পেয়েছি 'AxesSubplot' object has no attribute 'colorbar'। আমি করেছি ax.colorbar()... আমি কি ভুল করছি?
লুকাস আইমারেটো 12

এই উদাহরণটি matplotlib OOP ইন্টারফেস ব্যবহার করার সময় একটি স্পষ্ট অ্যাপ্লিকেশন সরবরাহ করে না: matplotlib.org/gallery/api/agg_oo_sgskip.html
রিসার্ড Cetnarski

20

এখানে একটি কালারবার যুক্ত করার ওওপি উপায় :

fig, ax = plt.subplots()
im = ax.scatter(x, y, c=c)
fig.colorbar(im, ax=ax)

আমি যখন এটি করি, তখন আমি প্লটটি পুরোপুরি পুনরুদ্ধার করে শেষ করি যাতে সমস্ত পয়েন্টগুলি ঠিক ডানদিকের প্লটের একটি স্লাইভারের মধ্যে থাকে এবং রঙবারটি নীচে জুড়ে একটি খুব পাতলা রেখা থাকে।
মঙ্গলবার

সঠিক উত্তর, সরাসরি pltবর্ণবার প্লট করতে আমার মনে হয় এটি প্রস্তাবিত উপায় নয়। আপনার একটি প্রশংসিত উপায়।
GoingMyWay

2

আপনি যদি দুটি ভেরিয়েবল এবং তৃতীয় দ্বারা রঙের মাধ্যমে ছড়িয়ে দিতে চান তবে আল্টায়ার একটি দুর্দান্ত পছন্দ হতে পারে।

ডেটাসেট তৈরি করা হচ্ছে

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.DataFrame(40*np.random.randn(10, 3), columns=['A', 'B','C'])

আলটিয়ার প্লট

from altair import *
Chart(df).mark_circle().encode(x='A',y='B', color='C').configure_cell(width=200, height=150)

পটভূমি

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

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