2017-03-28 9 views
13

समुद्री शैवाल और जुपीटर नोटबुक का उपयोग करके कुछ अभ्यास समस्याओं को करने के दौरान, मुझे एहसास हुआ कि डिस्प्लॉट() ग्राफ में अलग-अलग डिब्बे पर गहरे रूपरेखा नहीं थीं जिनमें सभी नमूना ग्राफ दस्तावेज है। मैंने पिचर्म का उपयोग करके ग्राफ बनाने की कोशिश की और एक ही चीज़ देखी। यह सोचकर कि यह एक समुद्री समस्या थी, मैंने मैटलप्लिब का उपयोग करके कुछ हिस्ट() चार्टों को आजमाया, केवल एक ही परिणाम प्राप्त करने के लिए।Matplotlib हिस्टोग्राम या सेबर्न डिस्प्लॉट्स के डिब्बे पर कोई रूपरेखा

import matplotlib.pyplot as plt 
import seaborn as sns 
titanic = sns.load_dataset('titanic') 
plt.hist(titanic['fare'], bins=30) 

निम्नलिखित ग्राफ झुकेंगे:

enter image description here

अंत में मैं plt.hist() फ़ंक्शन पर 'edgecolor' पैरामीटर भर में ठोकर खाई है, और यह काला करने के लिए स्थापित करने के चाल किया था। दुर्भाग्य से मुझे seaborn distplot() फ़ंक्शन पर उपयोग करने के लिए एक समान पैरामीटर नहीं मिला है, इसलिए मैं अभी भी ऐसा चार्ट प्राप्त करने में असमर्थ हूं जो ऐसा दिखता है।

मैं matplotlib में rcParams बदलते में देखा है, लेकिन मैं उस के साथ कोई अनुभव नहीं है और निम्न स्क्रिप्ट मैं कुछ नहीं कर लग रहा था भाग गया:

import matplotlib as mpl 

mpl.rcParams['lines.linewidth'] = 1 
mpl.rcParams['lines.color'] = 'black' 
mpl.rcParams['patch.linewidth'] = 1 
mpl.rcParams['patch.edgecolor'] = 'black' 
mpl.rcParams['axes.linewidth'] = 1 
mpl.rcParams['axes.edgecolor'] = 'black' 

मैं सिर्फ एक तरह से मूल्य पर अनुमान लगा रहा था मैं चाहिए था बदलने के लिए, लेकिन मेरे ग्राफों को फिर से चलाने से कोई बदलाव नहीं हुआ।

मैंने mpl.rcdefaults() का उपयोग कर डिफ़ॉल्ट सेटिंग्स पर वापस जाने का प्रयास किया लेकिन एक बार फिर, कोई बदलाव नहीं हुआ।

मैंने कोंडा का उपयोग करके matplotlib को पुनर्स्थापित किया लेकिन फिर भी ग्राफ समान दिखते हैं। मैं इन चार्टों के लिए डिफ़ॉल्ट किनारे रंग को बदलने के तरीकों से बाहर निकल रहा हूं। मैं कोंडा बिल्ड का उपयोग कर पाइथन, मैटलप्लिब और सीबर्न के नवीनतम संस्करण चला रहा हूं।

उत्तर

25

matplotlib 2.0 के अपडेट के हिस्से के रूप में बार प्लॉट पर किनारों turned off by default हैं। हालांकि, आप आरसीपीएआर

plt.rcParams["patch.force_edgecolor"] = True 

वैश्विक स्तर पर किनारों को चालू करने के लिए उपयोग कर सकते हैं।

शायद सबसे आसान विकल्प आप सीधे edgecolor या ec तर्क का उपयोग कर सकते हैं, विशेष रूप से, जब एक Seaborn साजिश बनाने, hist_kws तर्क का उपयोग edgecolor स्थापित करने के लिए

ax = sns.distplot(x, hist_kws=dict(edgecolor="k", linewidth=2)) 

matplotlib भूखंडों के लिए है।

plt.bar(x,y, edgecolor="k") 
plt.hist(x, edgecolor="k") 

समान रूप से, पांडा भूखंडों के लिए,

df.plot(kind='hist',edgecolor="k") 

एक पूरा Seaborn उदाहरण:

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

x = np.random.randn(100) 
ax = sns.distplot(x, hist_kws=dict(edgecolor="k", linewidth=2)) 
plt.show() 

enter image description here

+1

मैं कर रहा हूँ निश्चित रूप से फिर से उपयोग करते हुए: "सामान्य Seaborn में बहुत है जब लाल शैली की सेटिंग्स की बात आती है तो लालची। " – bernie

+0

उत्तर के लिए धन्यवाद, मैंने पहले hist_kws तर्क का उपयोग नहीं किया था। आपने कहा कि शायद समुद्री तट में किनारे रंग/रेखा चौड़ाई के लिए कोई वैश्विक सेटिंग नहीं है, लेकिन क्या matplotlib के हिस्ट() फ़ंक्शन के लिए कोई है? मुझे लगता है कि समुद्री डाकू() को अपनी डिस्टप्लॉट() बनाने के लिए बहुत सी डिफ़ॉल्ट सेटिंग्स लेता है, इसलिए मैटलप्लिब की सेटिंग्स को बदलने से मेरा समुद्री तट चार्ट भी बदल जाएगा।मैं सिर्फ इस बात पर उलझन में हूं कि मेरे चार्ट में डिब्बे की मूल रूप से उनके लिए कोई रूपरेखा नहीं है, जब मैंने ऑनलाइन देखा है कि हर दूसरे चार्ट में उन्हें स्पष्ट रूप से तर्क देने के बिना है। –

+1

matplotlib संस्करण 2 'हिस्ट' में कोई किनार नहीं है जबकि नीचे दिए गए संस्करण में उन्हें डिफ़ॉल्ट रूप से चालू किया गया है (यह किनारों के साथ कई उदाहरण देखने का कारण हो सकता है)। Seaborn भी उन्हें डिफ़ॉल्ट रूप से बंद कर दिया है। लेकिन, मैं वास्तव में गलत था, '' patch.force_edgecolor 'नामक एक वैश्विक सेटिंग है जो सभी पैच के लिए किनारों को सेट करेगी, बारपॉट्स में बार भी। मैंने जवाब अपडेट किया। – ImportanceOfBeingErnest

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