2015-10-20 6 views
10

बदलें मैं matplotlib का उपयोग करके अपने सभी भूखंडों का उपयोग करता था जब तक कि मैंने हाल ही में seaborn की खोज नहीं की। मुझे विशेष रूप से दिलचस्प तथ्य मिला कि यह आपको दिए गए hue चर की तुलना करने के लिए वायलिन को विभाजित करने की अनुमति देता है।समुद्री डाकू वायलिनप्लॉट्स: वायलिन रंग, अक्ष नाम, किंवदंती

खैर, मेरी बड़ी समस्या यह है कि मैं क्या मैं आदेश वायलिन रंग बदलने के लिए संशोधित करने के लिए क्या है पता नहीं है है, नाम, या जगह कथा मैं कहाँ चाहते अक्ष। यहाँ

import seaborn as sns 
    tips = sns.load_dataset("tips") 
    sns.set(style="ticks", palette="colorblind") 
    g = sns.FacetGrid(tips, col="time", size=4, aspect=.75) 
    g = g.map(sns.violinplot, "sex", "total_bill", "smoker", inner=None, linewidth=1, scale="area", split=True, width=0.75).despine(left=True).add_legend(title="smoker") 
    g.savefig(os.path.join(options.output_dir, "figures", "violinplots.png")) 

और उत्पादन आंकड़ा violinplots.png है:

यहाँ उदाहरण मैं seaborn से पीछा किया है

enter image description here

जबकि मैं नहीं बल्कि कुछ इस तरह करना चाहते हैं:

enter image description here

संक्षेप में:

  • उपयोग white और blue रंग
  • कुल्हाड़ियों names
  • लिखने leftmost y axis की जगह केवल
  • बनाने के अपने ही legend with the blue category only

अग्रिम धन्यवाद। किसी भी मदद का स्वागत किया जाएगा।


मामले किसी में रुचि थी, यहाँ कैसे मैं अंत में MrPedru22 को आंकड़ा धन्यवाद हल हो गई है:

import seaborn as sns 
tips = sns.load_dataset("tips") 
sns.set(context="paper", palette="colorblind", style="ticks") 
g = sns.FacetGrid(tips, col="time", sharey=False, size=4, aspect=.5) 
g = g.map(seaborn.violinplot, "sex", "total_bill", "smoker", cut=0, inner=None, split=True, palette={"No": "#4477AA", "Yes": "white"}, saturation=1).despine(left=True) 
# Set axis labels & ticks # 
g.fig.get_axes()[0].set_xlabel("Lunch") 
g.fig.get_axes()[1].set_xlabel("Dinner") 
g.fig.get_axes()[0].set_xticklabels(["Male", "Female"]) 
g.fig.get_axes()[1].set_xticklabels(["Male", "Female"]) 
g.fig.get_axes()[0].set_ylabel("Total bill") 
g.fig.get_axes()[0].set_yticks(range(0, 80, 10)) 
g.fig.get_axes()[1].set_yticks([]) 
g.fig.get_axes()[0].spines["left"].set_visible(True) 
# Set legend # 
handles, labels = g.fig.get_axes()[0].get_legend_handles_labels() 
g.fig.get_axes()[0].legend([handles[1]], ["Non-smoker"], loc='upper left') 
# Fixing titles # 
g.fig.get_axes()[0].set_title("") 
g.fig.get_axes()[1].set_title("") 
g.plt.show() 

enter image description here

+1

क्या आपने दस्तावेज़ पढ़ा था? और फिर कुछ कोशिश करें? – jrjc

+1

हां बेशक, मुझे पूरे सप्ताहांत के लिए इस पर रखा गया है, इसलिए मैं पूछ रहा हूं। वायलिन रंगों के लिए: मैंने रंगों के अपने पैलेट द्वारा sns.violinplot में दोनों रंग और sns.set() में पैलेट बदल दिया है। जब मैं दो रंगों का रंग पैलेट बना देता हूं, तो यह केवल दूसरे रंग को अनदेखा करता है। यह उस रंग के पहले रंग और हल्का संस्करण का उपयोग करता है। अगर मैं रंग परिभाषित करता हूं तो वही। किंवदंती के लिए, सिद्धांत रूप में इसे बाहर की किंवदंती रखना चाहिए, लेकिन यह इसे अनदेखा कर रहा है। नाम और अक्ष मैं उन्हें चित्रकार के साथ बदल सकता हूं, इसलिए यह इतना बड़ा सौदा नहीं है। लेकिन मैं वास्तव में रंगों से निराश हूँ। – ofornes

+0

उदाहरण के लिए, यह आप है जो अक्ष को 'despine (left = True)' के साथ हटा देता है। मेरा अनुमान है कि आपने पर्याप्त दस्तावेज़ नहीं पढ़ा था। यदि केवल रंग का मामला है, तो अपने प्रश्न को केवल रंग भाग में कम करने का प्रयास करें, और हमें दिखाएं कि आप क्या प्रयास करते हैं, तो कोई जवाब दे सकता है। – jrjc

उत्तर

5

यहाँ कुछ जवाब हैं:

import seaborn as sns 
tips = sns.load_dataset("tips") 
sns.set(style="ticks", palette="colorblind") 
g = sns.FacetGrid(tips, col="time", size=4, aspect=.75) 
g = g.map(sns.violinplot, "sex", "total_bill", "smoker", palette={"No": "b", "Yes": "w"}, inner=None, linewidth=1, scale="area", split=True, width=0.75).despine(left=True) 
g.fig.get_axes()[0].legend(title= 'smoker',loc='upper left') 
g.set_axis_labels('lunch','total bill') 
sns.plt.show() 
  • सफेद का प्रयोग करें और नीला रंग: pallete के माध्यम से, जैसा कि ऊपर का प्रदर्शन किया ("डब्ल्यू" सफेद का मतलब है)
  • बदलें कुल्हाड़ियों नाम: set_axis_labels विधि
  • बाकी के साथ मैं का उत्तर नहीं मिल सकता है, लेकिन प्रलेखन जांचें: http://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.FacetGrid.html#seaborn.FacetGrid आशा है कि यह मदद करता है !
+0

यदि मैं इसे सही ढंग से समझता हूं, तो दोनों वायलिन प्लॉट 'g.fig' के अंतर्गत हैं। तो, उदाहरण के लिए, यदि मैं बाईं ओर वायलिन प्लॉट में किसी तत्व को एक्सेस करना चाहता हूं जो 0 कुल्हाड़ी ('g.fig.get_axes() [0]') के माध्यम से होगा, अन्यथा 1 कुल्हाड़ी ('g.fig। get_axes() [1] '), है ना? – ofornes

+0

हां यह सही है। इसलिए, जब आप दोपहर के भोजन और रात के खाने से सेक्स को बदलना चाहते थे, तो आप इसे 'g.fig.get_axes() [0] .set_xlabel ("लंच") 'और' g.fig.get_axes() [1] के साथ कर सकते हैं। set_xlabel ("रात्रिभोज") ' – MrPedru22

+0

क्या आपको कोई एक्स एक्स कताई में शामिल होने के बारे में कोई विचार है जैसे कि वे एक सिंगल अक्ष थे? – ofornes

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