2015-03-06 8 views
9

नहीं दिखा रहा था मैं सोच रहा था कि अगर किसी को Matplotlib के बॉक्स प्लॉट फ़्लियर के साथ कोई समस्या नहीं दिख रही है?Matplotlib बॉक्स प्लॉट फ्लायर

मैं सचमुच कॉपी-पेस्ट किया यहाँ एक अजगर स्क्रिप्ट में इस उदाहरण: http://blog.bharatbhole.com/creating-boxplots-with-matplotlib/

... लेकिन बॉक्स साजिश फ़्लायर (बाहरी कारकों के कारण) नहीं दिखा रहे हैं। क्या किसी को पता है कि मैं उन्हें क्यों नहीं देख सकता हूं? क्षमा करें अगर यह एक मूर्ख सवाल है, लेकिन मैं अपने जीवन के लिए यह नहीं समझ सकता कि यह क्यों काम नहीं करता है।

## Create data 
np.random.seed(10) 
collectn_1 = np.random.normal(100, 10, 200) 
collectn_2 = np.random.normal(80, 30, 200) 
collectn_3 = np.random.normal(90, 20, 200) 
collectn_4 = np.random.normal(70, 25, 200) 

## combine these different collections into a list  
data_to_plot = [collectn_1, collectn_2, collectn_3, collectn_4] 

# Create a figure instance 
fig = plt.figure(1, figsize=(9, 6)) 

# Create an axes instance 
ax = fig.add_subplot(111) 

# Create the boxplot 
bp = ax.boxplot(data_to_plot) 

मैं भी है कि स्क्रिप्ट की अंतिम पंक्ति के लिए showfliers=True जोड़ने की कोशिश की, लेकिन यह अभी भी काम नहीं कर रहा।

यह वही है मैं एक आउटपुट के रूप में मिलता है:

enter image description here

+0

मैं कॉपी-पेस्ट करके मूल कि कोड reproduced। क्या आपके पास कुछ और लोड है? ग्रिड/पृष्ठभूमि रंग/इकाई टाइपफेस सभी गैर मानक मानते हैं। – Tom

+0

मैं एक आईपथन नोटबुक का उपयोग कर रहा हूं ... मुझे इसका उल्लेख करना चाहिए था। यही कारण है कि। क्या आप स्वरूपण को डिफ़ॉल्ट Matplotlib सेटिंग्स पर वापस कैसे रखना चाहते हैं? –

उत्तर

2

आप फ़्लायर नहीं देख सकते हैं यदि उड़ाका मार्कर None करने वाले थे। ,

import numpy as np 
import matplotlib.pyplot as plt 

np.random.seed(10) 
collectn_1 = np.random.normal(100, 10, 200) 
collectn_2 = np.random.normal(80, 30, 200) 
collectn_3 = np.random.normal(90, 20, 200) 
collectn_4 = np.random.normal(70, 25, 200) 

## combine these different collections into a list  
data_to_plot = [collectn_1, collectn_2, collectn_3, collectn_4] 

# Create a figure instance 
fig = plt.figure(1, figsize=(9, 6)) 

# Create an axes instance 
ax = fig.add_subplot(111) 

# Create the boxplot 
bp = ax.boxplot(data_to_plot, showfliers=True) 

for flier in bp['fliers']: 
    flier.set(marker='o', color='#e7298a', alpha=0.5) 

plt.show() 

पैदावार

enter image description here

+0

विचित्र रूप से पर्याप्त, जब मैंने ओपी का कोड चलाया, तो मैंने आउटलेटर्स को देखा, लेकिन आपका कोड चलाने पर नहीं। क्या आपका मतलब 'मार्कर = कोई नहीं' है? इसे 'मार्कर =' ओ 'में बदलना आपके ग्राफ (मेरे लिए) उत्पन्न करता है। – jedwards

+1

@jedwards: हेड-अप के लिए धन्यवाद। मैंने गलत 'मार्कर' सेटिंग के साथ कोड को कॉपी-पेस्ट किया। – unutbu

+0

एचएम। हाँ, मुझे इस तरह की साजिश नहीं मिल रही है। मुझे लगता है कि ऐसा इसलिए है क्योंकि आईपीथन नोटबुक का उपयोग मैं कर रहा हूं एक अजीब स्वरूपण है कि मैं छुटकारा नहीं पा सकता हूं। क्या फ़्लियर (बाहरी) मान प्राप्त करने का कोई आसान तरीका है? मैंने 'बीपी ['फ्लायर'] में देखने की कोशिश की है, लेकिन मुझे इससे मूल्य निकालने का कोई तरीका नहीं मिल रहा है। जब तक मेरे पास मूल्य हैं, मुझे लगता है कि मैं उन्हें अपने बॉक्स प्लॉट पर प्लॉट कर सकता हूं। –

20

अपने भूखंड की नज़र से ऐसा लगता है आप seaborn मॉड्यूल आयात किया है: page you linked to एक for flier in bp['fliers']: पाश, जो उड़ाका मार्कर शैली, रंग और अल्फा सेट है । एक issue है जिसमें matplotlib boxplot fliers दिखाई नहीं दे रहे हैं जब समुद्री डाकू आयात किया जाता है, भले ही फ्लायर स्पष्ट रूप से सक्षम हों।आपका कोड ठीक काम कर रहा हो रहे हैं जब Seaborn आयात नहीं किया जाता है:

समाधान 1:

मान लिया जाये कि आप आयात किया है

Boxplot with fliers, no seaborn

जब Seaborn आयात किया जाता है, तो आपको निम्न कर सकता है इस तरह की समुद्री डाकू:

import seaborn as sns

sns.boxplot(data_to_plot, ax=ax)

में जिसके परिणामस्वरूप:आप Seaborn boxplot समारोह का उपयोग कर सकते

Seaborn boxplot with fliers

समाधान 2:

मामले में आप matplotlib boxplot समारोह का उपयोग कर रखना चाहते हैं (Automatic (whisker-sensitive) ylim in boxplots से):

ax.boxplot(data_to_plot, sym='k.')

में जिसके परिणामस्वरूप:

Matplotlib boxplot with fliers

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