2014-05-14 4 views
7

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

मैंने सफलता के बिना उत्तर खोजने के लिए पूरी खोज की है। निकटतम मैं आया हूं वही प्रश्न है लेकिन आर के लिए (जिसे मैं अपरिचित हूं)। देखें Is it possible to plot a boxplot from previously-calculated statistics easily (in R?)

क्या कोई मुझे दिखा सकता है कि बॉक्सप्लॉट कैसे करें?

बहुत धन्यवाद! यह व्यक्तिगत रूप से boxplot तत्वों chancing करके स्वयं भी ऐसा करने के लिए

+1

यह कार्यक्षमता मास्टर शाखा पर मौजूद है और 1.4 में हो जाएगा (जो चिह्नित किया जाना चाहिए 'शीघ्र')। https://github.com/matplotlib/matplotlib/pull/2643 – tacaswell

उत्तर

6

पुराने संस्करणों में, आप है

Mean=[3.4] #mean 
IQR=[3.0,3.9] #inter quantile range 
CL=[2.0,5.0] #confidence limit 
A=np.random.random(50) 
D=plt.boxplot(A) # a simple case with just one variable to boxplot 
D['medians'][0].set_ydata(Mean) 
D['boxes'][0]._xy[[0,1,4], 1]=IQR[0] 
D['boxes'][0]._xy[[2,3],1]=IQR[1] 
D['whiskers'][0].set_ydata(np.array([IQR[0], CL[0]])) 
D['whiskers'][1].set_ydata(np.array([IQR[1], CL[1]])) 
D['caps'][0].set_ydata(np.array([CL[0], CL[0]])) 
D['caps'][1].set_ydata(np.array([CL[1], CL[1]])) 
_=plt.ylim(np.array(CL)+[-0.1*np.ptp(CL), 0.1*np.ptp(CL)]) #reset the limit 

enter image description here

+0

बहुत धन्यवाद! वास्तव में अच्छा काम करता है। –

7

@tacaswell मैं आवश्यक दस्तावेज खोजने के लिए और आने के लिए सक्षम था की टिप्पणी के लिए धन्यवाद Matplotlib 1.4.3 का उपयोग कर एक उदाहरण के साथ। हालांकि, यह उदाहरण स्वचालित रूप से आकृति को सही आकार में स्केल नहीं करता है।

import matplotlib.pyplot as plt 

item = {} 

item["label"] = 'box' # not required 
item["mean"] = 5 # not required 
item["med"] = 5.5 
item["q1"] = 3.5 
item["q3"] = 7.5 
#item["cilo"] = 5.3 # not required 
#item["cihi"] = 5.7 # not required 
item["whislo"] = 2.0 # required 
item["whishi"] = 8.0 # required 
item["fliers"] = [] # required if showfliers=True 

stats = [item] 

fig, axes = plt.subplots(1, 1) 
axes.bxp(stats) 
axes.set_title('Default') 
y_axis = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
y_values = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] 
plt.yticks(y_axis, y_values) 

प्रलेखन के लिए प्रासंगिक लिंक:

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