2015-07-22 14 views
8

जैसा कि seaborn API में वर्णित है, निम्न कोड एक रैखिक प्रतिगमन साजिश का उत्पादन करेगा।सीबर्न रैखिक प्रतिगमन संयुक्त प्लॉट में लाइन रंग को कैसे बदलें

import numpy as np, pandas as pd; np.random.seed(0) 
import seaborn as sns; sns.set(style="white", color_codes=True) 
tips = sns.load_dataset("tips") 
g = sns.jointplot(x="total_bill", y="tip", data=tips, kind='reg') 
sns.plt.show() 

हालांकि, डेटा बिंदुओं का एक बहुत प्रतिगमन लाइन के साथ अब और वास्तव में दिखाई नहीं देता है। मैं इसका रंग कैसे बदल सकता हूं? मुझे एक अंतर्निहित समुद्री तट कमांड नहीं मिला।

यदि रेखा पृष्ठभूमि में है (यानी बिंदुओं के पीछे), तो मैं यह भी पूछना चाहूंगा कि इसे सामने कैसे लाया जाए।

+0

Seaborn कलाकारों लौटे तो यह बहुत ही आसान होगा। सबसे अच्छा आप कर सकते हैं, यदि फ़ंक्शन एपीआई में कोई घुंडी नहीं है, तो 'g.lines' को रीजनेशन लाइन में कौन सा कलाकार आज़माएं और अनुमान लगाएं और फिर' ln.set_color ('k') ' – tacaswell

+0

करें संकेत के लिए @tcaswell धन्यवाद! दुर्भाग्य से 'विशेषता त्रुटि:' JointGrid 'ऑब्जेक्ट में कोई विशेषता नहीं है' लाइन ' – n1000

उत्तर

15

कुछ दृष्टिकोण हैं, क्योंकि मवास्कॉम ने ध्यान से बताया। आप संयुक्त साजिश करने के लिए तर्क पारित कर सकते हैं, लेकिन स्थापना के color पूरे scatterplot प्रभावित करता है:

import numpy as np, pandas as pd; np.random.seed(0) 
import seaborn as sns#; sns.set(style="white", color_codes=True) 
tips = sns.load_dataset("tips") 
g = sns.jointplot(x="total_bill", y="tip", data=tips, kind='reg', 
        joint_kws={'color':'green'}) # Scatter and regression all green 

enter image description here

या scatterplot कीवर्ड के शब्दकोश के माध्यम से लाइन की साजिश रचने कीवर्ड की एक शब्दकोश गुजरती हैं। मैंने यह जानने के लिए seaborn/linearmodels.py पढ़ा है कि यह कहां करना है, जो मनोरंजक और जानकारीपूर्ण था। dict में dict:

g = sns.jointplot(x="total_bill", y="tip", data=tips, kind='reg', 
        joint_kws={'line_kws':{'color':'cyan'}}) # Only regression cyan 

enter image description here

या बाद यह साजिश रची किया गया है आप लाइन तक पहुँचने और इसे सीधे बदल सकते हैं। यह पहली लाइन प्लॉट होने वाली रीग्रेशन लाइन पर निर्भर करता है, इसलिए समुद्री तट अपडेट के साथ तोड़ सकता है। यह सौंदर्यशास्त्र/शैक्षिक रूप से अलग है, क्योंकि आप अनिश्चितता फैलाने की याद नहीं करते हैं। JointGrid ऑब्जेक्ट से परिचित होने का यह एक अच्छा तरीका है और आप इसके साथ कैसे बातचीत कर सकते हैं। (और शायद वहाँ गुण आप समारोह कॉल तर्क के साथ सेट नहीं कर सकता है, हालांकि मैं किसी भी नहीं सोच सकते हैं कर रहे हैं।)

g = sns.jointplot(x="total_bill", y="tip", data=tips, kind='reg') 
regline = g.ax_joint.get_lines()[0] 
regline.set_color('red') 
regline.set_zorder('5') 

enter image description here

+0

बढ़िया - धन्यवाद! – n1000

+1

यह काम करता है लेकिन 'jointनमार्क' विकल्प का उपयोग करके प्लॉट में रंग को पास करना बेहतर होगा। – mwaskom

+0

मुझे लगता है कि यह सभी तरीकों से है, @mwaskom। दस्तावेज़ के लिए और कुछ और? :) – cphlewis

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