2016-06-18 11 views
25

सेबर्न रंग_पलेट नामक एक फ़ंक्शन प्रदान करता है, जो आपको भूखंडों के लिए आसानी से नए color_palettes बनाने की अनुमति देता है।seaborn color_palette matplotlib colormap

colors = ["#67E568","#257F27","#08420D","#FFF000","#FFB62B","#E56124","#E53E30","#7F2353","#F911FF","#9F8CA6"] 

color_palette = sns.color_palette(colors) 

मैं एक CMAP, जो मैं matplotlib में उपयोग कर सकते हैं करने के लिए color_palette को बदलने के लिए चाहते हैं, लेकिन मुझे लगता है मैं यह कैसे कर सकते हैं नहीं दिख रहा।

अफसोस की बात है कि "cubehelix_palette", "light_palette", ... जैसे "as_cmap" paramater है। दुर्भाग्यवश, "color_palette" नहीं है।

उत्तर

20

आप रंग की एक सूची Seaborn पैलेट से (प्रस्तावित परिवर्तनों के लिए @RafaelLopes को THX) matplolib का रंग नक्शे में बदलने के लिए है: उत्पन्न करने के लिए रंग पट्टियाँ है

import seaborn as sns 
import matplotlib.pylab as plt 
import numpy as np 
from matplotlib.colors import ListedColormap 

# construct cmap 
flatui = ["#9b59b6", "#3498db", "#95a5a6", "#e74c3c", "#34495e", "#2ecc71"] 
my_cmap = ListedColormap(sns.color_palette(flatui).as_hex()) 

N = 500 
data1 = np.random.randn(N) 
data2 = np.random.randn(N) 
colors = np.linspace(0,1,N) 
plt.scatter(data1, data2, c=colors, cmap=my_cmap) 
plt.colorbar() 
plt.show() 

enter image description here

+2

मुझे सही, अगर मैं गलत हूँ, लेकिन यह एक matplotlib CMAP करने के लिए एक Seaborn color_palette का एक परिवर्तन की तरह नहीं दिखता है, यह कैसे matplotlib के साथ एक रंग मैप बनाने के लिए पर कोई वैकल्पिक समाधान की तरह दिखता है। यदि मैं आपके कोड से sns.set_palette (flatui) हटाता हूं तो कुछ भी नहीं बदलता है। फिर भी इस matplotlib कार्यक्षमता दिखाने के लिए धन्यवाद। – Corrumpo

+1

कार्यक्षमता के मामले में यह सही उत्तर है, लेकिन कृपया लगातार अलग-अलग डेटा को मैप करने के लिए रंगों के अलग-अलग सेट का उपयोग न करें, यह बहुत भ्रामक है। – mwaskom

+2

इस उत्तर के आधार पर @ कॉर्रम्पो आप कोड का उपयोग 'cmap = ListedColormap (sns.color_palette()। As_hex()) ' – RafaelLopes

10

अधिकांश Seaborn तरीकों एक वैकल्पिक तर्क as_cmap जो डिफ़ॉल्ट रूप से False है। आप सीधे एक matplotlib रंग मैप प्राप्त करने के लिए उपयोग कर सकते हैं:

import seaborn as sns 
import matplotlib.pylab as plt 
import numpy as np 

# construct cmap 
my_cmap = sns.light_palette("Navy", as_cmap=True) 

N = 500 
data1 = np.random.randn(N) 
data2 = np.random.randn(N) 
colors = np.linspace(0,1,N) 
plt.scatter(data1, data2, c=colors, cmap=my_cmap) 
plt.colorbar() 
plt.show() 

enter image description here

6

पहले उत्तर किसी भी तरह से सही है लेकिन जिस तरह से भी अनावश्यक जानकारी का एक बहुत कुछ के साथ लंबे समय। सही और संक्षिप्त उत्तर है:

एक matplotlib संगत CMAP के लिए किसी भी sns.color_palette() परिवर्तित करने के लिए आप कोड

from matplotlib.colors import ListedColormap 
cmap = ListedColormap(sns.color_palette()) 
4

बस एक अतिरिक्त टिप की दो पंक्तियाँ की जरूरत है - अगर एक एक सतत colorbar/रंग मैप चाहता है, के रूप में 256 जोड़ने Seaborn colorcheme से आवश्यक रंगों की संख्या बहुत मदद करता है।

cmap = ListedColormap(sns.color_palette("Spectral",256))