तितर बितर के लिए matplotlib colorbar


89

मैं डेटा के साथ काम कर रहा हूं जिसमें डेटा के 3 प्लॉटिंग पैरामीटर हैं: x, y, c। स्कैटर प्लॉट के लिए आप कस्टम रंग मान कैसे बनाते हैं?

इस उदाहरण का विस्तार मैं करने की कोशिश कर रहा हूं:

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

जवाबों:


196

तितर बितर 1 पर matplotlib डॉक्स से :

cmap का उपयोग केवल तभी किया जाता है जब c फ्लोट की एक सरणी है

इसलिए कलरलिस्ट को ट्यूपल्स की सूची के बजाय फ्लोट्स की एक सूची बनाने की आवश्यकता है जैसा कि आपके पास अभी है। plt.colorbar () CircleCollection कि plt.scatter () रिटर्न की तरह एक नापसंद वस्तु चाहता है। vmin और vmax तब आपके कलरबार की सीमाओं को नियंत्रित कर सकते हैं। 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()... मैं क्या गलत कर रहा हूँ?
लुकास ऐमारेतो

यह उदाहरण matplotlib OOP इंटरफ़ेस का उपयोग करते समय एक स्पष्ट अनुप्रयोग प्रदान नहीं करता है: matplotlib.org/gallery/api/agg_oo_sgskip.html
Ryszard Cetnarski

18

यहाँ एक रंग पट्टी जोड़ने का ओओपी तरीका है:

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

जब मैं ऐसा करता हूं, तो मैं प्लॉट को पूरी तरह से पुनर्विक्रय के साथ समाप्त करता हूं, ताकि सभी बिंदुएं प्लॉट के एक स्लीपर के भीतर सबसे दाईं ओर हों, और नीचे की तरफ रंगबार एक बहुत पतली रेखा है।
10

सही उत्तर, सीधे pltप्लॉट कलरबार का उपयोग करना मेरे विचार से अनुशंसित तरीका नहीं है। तुम्हारा एक सराहनीय तरीका है।
गोइंगमवाय

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)

भूखंड

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.