Matplotlib में दो ऊर्ध्वाधर रेखाओं के बीच भरें


95

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

उदाहरण के लिए, मान लीजिए कि मैं x=0.2और x=4( प्लॉट की पूरी yश्रृंखला के बीच) एक प्लॉट बनाना चाहता हूं । मैं का उपयोग करना चाहिए fill_between, fillया fill_betweenx?

क्या मैं इसके लिए whereशर्त का उपयोग कर सकता हूं ?

जवाबों:


191

ऐसा लगता है कि आप axvspanफ़ंक्शंस के बीच में से एक के बजाय चाहते हैं । अंतर यह है कि axvspan(और axhspan) भूखंड की पूरी y (या x) सीमा को भर देगा कि आप कैसे ज़ूम करते हैं।

उदाहरण के लिए, आइए axvspan8 और 14 के बीच x- क्षेत्र को उजागर करने के लिए उपयोग करें:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, alpha=0.5, color='red')

plt.show()

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

आप ऐसा करने के fill_betweenxलिए उपयोग कर सकते हैं , लेकिन आयत का विस्तार (एक्स और वाई दोनों) डेटा निर्देशांक में होगा । साथ axvspan, 0 और 1 के लिए आयत डिफ़ॉल्ट की y-विस्तार और में हैं कुल्हाड़ियों निर्देशांक (दूसरे शब्दों में, साजिश की ऊंचाई के प्रतिशत)।

इसे स्पष्ट करने के लिए, आइए आयत को १०% से ९ ०% ऊँचाई तक बढ़ाएँ (इसके बजाय पूर्ण सीमा तक ले जाएँ)। ज़ूमिंग या पैनिंग का प्रयास करें, और ध्यान दें कि डिस्प्ले-स्पेस में निश्चित रूप से y-extents कहते हैं, जबकि ज़ूम-पैन के साथ x-extents चलते हैं:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, ymin=0.1, ymax=0.9, alpha=0.5, color='red')

plt.show()

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


3
जो लोग fill_betweenअधिक "विगली", ऊर्ध्वाधर लाइनों के लिए उपयोग करने के लिए एक समाधान में रुचि रखते हैं , transformपैरामीटर पर एक नज़र है (और यह उत्तर )
श्री Tsjolder
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.