2014-05-07 7 views
11

Dataframes एक boxplot विधि है, लेकिन वहाँ डॉट boxplots बनाने के लिए पांडा में, या अन्यथा seaborn साथ किसी भी तरह है?डॉट boxplots पांडा में

एक डॉट-बॉक्सप्लॉट द्वारा, मेरा मतलब है कि एक बॉक्सप्लॉट साजिश के अंदर वास्तविक डेटा बिंदु (या उनमें से एक प्रासंगिक नमूना) दिखाता है, उदाहरण के लिए नीचे दिए गए उदाहरण की तरह (आर में प्राप्त)।

enter image description here

+0

इस है अपने http://pandas.pydata.org/pandas-docs/version/0.13.1/generated/pandas.DataFrame.boxplot के लिए क्या देख रहे हैं। एचटीएमएल –

+0

धन्यवाद @pss मुझे इसके बारे में पता है। मेरा सवाल विशेष रूप से डॉट बॉक्सप्लॉट्स के बारे में है। मुझे आश्चर्य है कि बाद में बिंदुओं को जोड़ने का कोई आसान तरीका है ('x' अक्ष के साथ बिंदुओं के यादृच्छिकरण को नोट करना आसान बनाने के लिए) –

+0

' matplotlib' से कस्टम प्लॉट का उपयोग करें, इसे pandas.boxplot पर फ़ीड करें एक 'कुल्हाड़ी' तर्क, फिर एक ही साजिश में एक बिंदु साजिश बनाओ। –

उत्तर

12

एक और अधिक सटीक (पांडा के साथ) ओ पी के प्रश्न से संबंधित जवाब के लिए:

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 

data = pd.DataFrame({ "A":np.random.normal(0.8,0.2,20), 
         "B":np.random.normal(0.8,0.1,20), 
         "C":np.random.normal(0.9,0.1,20)}) 

data.boxplot() 

for i,d in enumerate(data): 
    y = data[d] 
    x = np.random.normal(i+1, 0.04, len(y)) 
    plt.plot(x, y, mfc = ["orange","blue","yellow"][i], mec='k', ms=7, marker="o", linestyle="None") 

plt.hlines(1,0,4,linestyle="--") 

boxplot


पुराने संस्करण (अधिक सामान्य):

के साथ matplotlib:

import numpy as np 
import matplotlib.pyplot as plt 

a = np.random.normal(0,2,1000) 
b = np.random.normal(-2,7,100) 
data = [a,b] 

plt.boxplot(data) # Or you can use the boxplot from Pandas 

for i in [1,2]: 
    y = data[i-1] 
    x = np.random.normal(i, 0.02, len(y)) 
    plt.plot(x, y, 'r.', alpha=0.2) 

कौन देता है: dot-boxplot

से this tutorial

आशा इस मदद करता है प्रेरित होकर!

12

यह stripplot फ़ंक्शन का उपयोग करके समुद्री संस्करण 0.6 (वर्तमान में गिथब पर मास्टर शाखा में) के साथ संभव होगा। यहाँ एक उदाहरण है:

import seaborn as sns 
tips = sns.load_dataset("tips") 
sns.boxplot(x="day", y="total_bill", data=tips) 
sns.stripplot(x="day", y="total_bill", data=tips, 
       size=4, jitter=True, edgecolor="gray") 

enter image description here