त्रुटि सलाखों के बजाय छायांकित क्षेत्र के रूप में प्लॉट येर / ज़ेर


142

Matplotlib में, मैं त्रुटि सलाखों के बजाय छायांकित क्षेत्र के रूप में त्रुटि कैसे कर सकता हूं?

उदाहरण के लिए:

यहाँ छवि विवरण दर्ज करें

बजाय

यहाँ छवि विवरण दर्ज करें


1
शीर्ष भूखंड कैसे उत्पन्न किया गया था?
माइकलएसबी

जवाबों:


151

अपने उदाहरण ग्राफ में बिंदुओं के बीच सहज प्रक्षेप को अनदेखा करना (जिसमें कुछ मैनुअल प्रक्षेप करने की आवश्यकता होती है, या बस आपके डेटा का उच्च रिज़ॉल्यूशन होता है), आप उपयोग कर सकते हैं pyplot.fill_between():

from matplotlib import pyplot as plt
import numpy as np

x = np.linspace(0, 30, 30)
y = np.sin(x/6*np.pi)
error = np.random.normal(0.1, 0.02, size=y.shape)
y += np.random.normal(0, 0.1, size=y.shape)

plt.plot(x, y, 'k-')
plt.fill_between(x, y-error, y+error)
plt.show()

यहाँ छवि विवरण दर्ज करें

मैटलपॉटलिब उदाहरण भी देखें ।


1
उत्तम। हाँ, मेरा मतलब स्मूद लाइनों के साथ एक उदाहरण को शामिल करना नहीं था।
ऑस्टिन रिचर्डसन

किसी भी विचार कैसे एक छायांकित बैंड के बजाय इस शो शेडेड बक्से बनाने के लिए? मेरी पहली वृत्ति दुर्व्यवहार की थी, lwलेकिन यह कुल्हाड़ियों के समान इकाइयों का उपयोग नहीं करता प्रतीत होता है।
बेंजामिन बैनिएर

@BenjaminBannier मुझे पूरी तरह से यकीन नहीं है कि आपका क्या मतलब है। ऐसा लगता है जैसे आप प्रत्येक बिंदु पर खींचे गए बॉक्स को पसंद करते हैं, इसकी ऊँचाई त्रुटि पट्टी के समान होती है, जबकि चौड़ाई ऐसी होनी चाहिए कि वे पड़ोसी बक्से को कनेक्ट (स्पर्श) करें। क्या वो सही है?

1
@EL_DON का मतलब है कि आप एक ब्लैक लाइन + ब्लू बैंड के साथ एक किंवदंती पसंद करेंगे, और पाठ "डेटा + 1 सिग्मा त्रुटि क्षेत्र" जैसा कुछ होगा?

1
@ यदि आपके पास एकमात्र त्रुटि पट्टियाँ क्षैतिज हैं, तो आपको संभवतः अपनी वास्तविक समस्या (और इस प्रकार यह आंकड़ा) की कुल्हाड़ियों को पलटना चाहिए। आम तौर पर, स्वतंत्र चर (या बहुत छोटी) त्रुटि सलाखों के बिना एक है। आप अपने डेटा चर को स्वैप करके, और matplotlib में, कुल्हाड़ियों को भी स्वैप कर सकते हैं।

131

यह मूल रूप से एवर्ट द्वारा प्रदान किया गया एक ही उत्तर है , लेकिन कुछ शांत विकल्पों को दिखाने के लिए बढ़ाया गया हैfill_between

यहाँ छवि विवरण दर्ज करें

from matplotlib import pyplot as pl
import numpy as np

pl.clf()
pl.hold(1)

x = np.linspace(0, 30, 100)
y = np.sin(x) * 0.5
pl.plot(x, y, '-k')


x = np.linspace(0, 30, 30)
y = np.sin(x/6*np.pi)
error = np.random.normal(0.1, 0.02, size=y.shape) +.1
y += np.random.normal(0, 0.1, size=y.shape)

pl.plot(x, y, 'k', color='#CC4F1B')
pl.fill_between(x, y-error, y+error,
    alpha=0.5, edgecolor='#CC4F1B', facecolor='#FF9848')

y = np.cos(x/6*np.pi)    
error = np.random.rand(len(y)) * 0.5
y += np.random.normal(0, 0.1, size=y.shape)
pl.plot(x, y, 'k', color='#1B2ACC')
pl.fill_between(x, y-error, y+error,
    alpha=0.2, edgecolor='#1B2ACC', facecolor='#089FFF',
    linewidth=4, linestyle='dashdot', antialiased=True)



y = np.cos(x/6*np.pi)  + np.sin(x/3*np.pi)  
error = np.random.rand(len(y)) * 0.5
y += np.random.normal(0, 0.1, size=y.shape)
pl.plot(x, y, 'k', color='#3F7F4C')
pl.fill_between(x, y-error, y+error,
    alpha=1, edgecolor='#3F7F4C', facecolor='#7EFF99',
    linewidth=0)



pl.show()

1
थोड़ा बेहतर समाधान: stackoverflow.com/questions/43064524/…
शीतल शाह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.