2016-02-23 7 views
5

एक ऑनलाइन Jupyter नोटबुक कोड प्रदर्शन और रंग मतभेद दिखा है पर: https://anaconda.org/walter/pandas_seaborn_color/notebookपांडस बार भूखंडों के लिए सीबर्न रंग पैलेट क्यों काम नहीं करता है?

रंग जब मैं बार पांडा dataframe पद्धति का उपयोग करके भूखंडों बनाने के गलत हैं। Seaborn matplotlib के रंग पैलेट में सुधार करता है। Matplotlib से सभी भूखंड स्वचालित रूप से नए Seaborn पैलेट का उपयोग करें। हालांकि, पांडस डेटाफ्रेम से बार प्लॉट गैर-सेबर्न रंगों में वापस आते हैं। यह व्यवहार संगत नहीं है, क्योंकि पांडस डेटाफ्रेम से लाइन प्लॉट सेबर्न रंगों का उपयोग करते हैं। यह मेरे भूखंडों को विभिन्न शैलियों में दिखता है, भले ही मैं अपने सभी भूखंडों के लिए पांडों का उपयोग करता हूं।

एक सतत सीबर्न रंग पैलेट प्राप्त करते समय मैं पांडो विधियों का उपयोग कैसे कर सकता हूं?

मैं इसे इस कोड (पांडा, matplotlib और समुद्री डाकू) के लिए आवश्यक संकुल के साथ एक कंडी पर्यावरण का उपयोग कर अजगर 2.7.11 में चला रहा हूँ।

import pandas as pd 
import matplotlib.pyplot as plt 
import seaborn as sns 

df = pd.DataFrame({'y':[5,7,3,8]}) 

# matplotlib figure correctly uses Seaborn color palette 
plt.figure() 
plt.bar(df.index, df['y']) 
plt.show() 

# pandas bar plot reverts to default matplotlib color palette 
df.plot(kind='bar') 
plt.show() 

# pandas line plots correctly use seaborn color palette 
df.plot() 
plt.show() 
+0

* 1. * अपने विशिष्ट प्रश्न क्या है - आप एक समाधान जानना चाहते हो (और संभव कामकाज) या आप इस व्यवहार के कारण को जानना चाहते हैं? * 2. * यह जानकारी आपके प्रश्न से संबंधित हो सकती है: 'pyplot.scatter' भी समुद्री रंगों का उपयोग नहीं करता है (डिफ़ॉल्ट रूप से?)। – kazemakase

+0

धन्यवाद kazemakase। मैंने इस सवाल को स्पष्ट करने के लिए संपादित किया है कि मैं जानना चाहता हूं कि मैं एक सतत सीबर्न रंग पैलेट प्राप्त करते समय पांडों के तरीकों का उपयोग करके कैसे साजिश कर सकता हूं। (बेशक, कारण जानने के लिए उपर्युक्त मददगार हो सकता है।) – Walter

उत्तर

5

sns.color_palette() पर इंगित करने के लिए @mwaskom पर क्रेडिट। मैं उस की तलाश में था लेकिन किसी भी तरह से मैंने इसे prop_cycle के साथ मूल गड़बड़ कर दिया।


एक कामकाज के रूप में आप हाथ से रंग सेट कर सकते हैं। ध्यान दें कि color कीवर्ड तर्क अलग-अलग व्यवहार करता है यदि आप एक या कई कॉलम प्लॉट कर रहे हैं।

df = pd.DataFrame({'x': [3, 6, 1, 2], 'y':[5, 7, 3, 8]}) 

df['y'].plot(kind='bar', color=sns.color_palette(n_colors=1)) 

One column plot

df.plot(kind='bar', color=sns.color_palette()) 

Two columns plot

मेरे मूल जवाब:

prop_cycle = plt.rcParams['axes.prop_cycle'] 
df['y'].plot(kind='bar', color=next(iter(prop_cycle))['color']) 
df.plot(kind='bar', color=[x['color'] for x in prop_cycle]) 
+1

वर्तमान रंग प्राप्त करने के लिए आप बस 'sns.color_palette() 'कर सकते हैं; सूची समझ के साथ उस व्यापार को करना जरूरी नहीं है। – mwaskom

+0

यह चाल है! Goyo और mwaskom दोनों, धन्यवाद। – Walter

2

यह था विशेष रूप से बार भूखंडों (और boxplots रूप में अच्छी तरह मुझे लगता है कि) है, जो पांडा मास्टर में तय हो गई है के लिए पांडा में एक बग (सूचना issue देख सकते हैं और PR इसे ठीक करने के लिए)।
यह पांडा 0.18.0 में होगा जो आने वाले हफ्तों में जारी किया जाएगा।

+0

जॉरीस, यह वास्तव में सहायक है और समस्या लिंक जानकारीपूर्ण है। काश मैं दो उत्तरों का चयन कर सकता हूं, लेकिन मैं गोयो के साथ गया क्योंकि यह तुरंत उपयोगी था और ऐसा लगता है कि इस विषय के संबंध में इसकी लंबी उम्र के लिए अधिक संभावना होगी। धन्यवाद! – Walter

+0

हां, ज़ाहिर है, कोई समस्या नहीं! :-) – joris

+0

मैंने अभी भी इस उत्तर की पुष्टि की है। मैंने पांडस विकास संस्करण 0.18.0rc1 + 62.g41b1d25 स्थापित किया है और इससे समस्या हल हो जाती है। – Walter

संबंधित मुद्दे