मैंने बग को ट्रैक किया है। बग तकनीकी रूप से, seaborn
नहीं के रूप में मैं मूल रूप से सोचा, pandas
में है, हालांकि यह pandas
, seaborn
, और matplotlib
से कोड शामिल है ...
pandas.tools.plotting.ScatterPlot._make_plot
में निम्न कोड रंग चुनने के लिए होता है बिखराव साजिश
में इस्तेमाल किया जाएगा
if c is None:
c_values = self.plt.rcParams['patch.facecolor']
elif c_is_column:
c_values = self.data[c].values
else:
c_values = c
अपने मामले c
में None
, जो डिफ़ॉल्ट मान है, और इसलिए c_values
plt.rcParams['patch.facecolor']
द्वारा दिया जाएगा के बराबर हो जाएगा।
अब, स्वयं को स्थापित करने के हिस्से के रूप में, समुद्री डाकू plt.rcParams['patch.facecolor']
से (0.5725490196078431, 0.7764705882352941, 1.0)
संशोधित करता है जो एक आरजीबी ट्यूपल है। यदि seaborn
का उपयोग नहीं किया जाता है तो मान matplotlib डिफ़ॉल्ट है जो 'b'
है (एक स्ट्रिंग रंग "नीला" इंगित करता है)।
c_values
तो बाद में प्रयोग किया जाता है वास्तव में भीतर ax.scatter
scatter = ax.scatter(data[x].values, data[y].values, c=c_values,
label=label, cmap=cmap, **self.kwds)
लेखाचित्र तैयार करने समस्या तब उत्पन्न होती है क्योंकि कीवर्ड तर्क c
तर्क के कई अलग अलग प्रकार के स्वीकार कर सकते हैं, इसे स्वीकार कर सकते हैं: -
- एक मूल स्ट्रिंग (जैसे
'b'
मूल matplotlib मामले में);
- रंग विनिर्देशों का एक अनुक्रम (आरजीबी मूल्यों का अनुक्रम कहें);
- वर्तमान colormap पर मानचित्र करने के लिए मूल्यों का एक अनुक्रम।
matplotlib डॉक्स विशेष रूप से निम्नलिखित राज्य, मेरा प्रकाश डाला
ग एक ही रंग प्रारूप स्ट्रिंग, या लंबाई एन के रंग विनिर्देशों के एक दृश्य, या एन संख्या का एक अनुक्रम हो सकता मैप किया kwargs के माध्यम से निर्दिष्ट cmap और मानक का उपयोग कर रंगों के लिए (नीचे देखें)। ध्यान दें कि सी एक संख्यात्मक आरजीबी या आरजीबीए अनुक्रम नहीं होना चाहिए क्योंकि यह रंगों की एक सरणी से रंगीन होने के लिए अलग नहीं है। सी 2-डी सरणी हो सकती है जिसमें पंक्तियां आरजीबी या आरजीबीए हैं, हालांकि।
क्या मूल रूप से होता है कि matplotlib c_values
मूल्य लेता है (जो तीन नंबर की एक टपल है) और फिर वर्तमान रंग मैप पर उन रंगों के नक्शे (डिफ़ॉल्ट रूप से Greys
होने के लिए पांडा द्वारा निर्धारित है)। इस तरह के रूप में, आप अलग अलग "greyishness" के साथ तीन बिखराव अंक मिलते हैं। आप अधिक से अधिक 3 बिखराव अंक है, matplotlib मान लिया गया है कि यह एक आरजीबी टपल क्योंकि लंबाई डेटा सरणियों की लंबाई से मेल नहीं खाता होना चाहिए (3! = 4) और इसलिए एक निरंतर आरबीजी रंग के रूप में यह उपयोग करता है।
इस पांडा Github here पर एक बग रिपोर्ट के रूप में लिखा गया है।
बहुत बहुत धन्यवाद। क्या आप गिटहब पर एक बग रिपोर्ट पोस्ट करने जा रहे हैं और पीआर जमा कर रहे हैं? यदि आप चाहें तो मैं कोशिश कर सकता हूं और कर सकता हूं। –
@ डेविड ब्रोचर्ट आह क्षमा करें उल्लेख करना भूल गया। मैं पांडा GitHub पर एक बग रिपोर्ट पोस्ट किया है [यहां] (https://github.com/pydata/pandas/issues/9724)। आगे बढ़ने से पहले लोग क्या कहते हैं देखेंगे। – Ffisegydd
अच्छा जासूस काम, @Ffisegydd – mwaskom