Matplotlib में collections.BrokenBarHCollection.span_where का उपयोग करके वक्र के ऊपर/नीचे के क्षेत्र को तार्किक शर्तों के आधार पर छायांकित (शेड) किया जा सकता है।
चरण
- फिगर आकार सेट करें और पैडिंग समायोजित करें
- NumPy से डेटा बिंदु (
t,s1,s2) बनाएं - फिगर और सबप्लॉट बनाएं
tऔरs1प्लॉट करें; क्षैतिज रेखा जोड़ेंBrokenBarHCollection.span_whereसे क्षैतिज बार संग्रह बनाएं- संग्रह को एक्सिस में जोड़ें
plt.show()से प्रदर्शित करें
उदाहरण
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.collections as collections
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
# डेटा बिंदु
t = np.arange(0.0, 2, 0.01)
s1 = np.sin(2 * np.pi * t)
s2 = 1.2 * np.sin(4 * np.pi * t)
fig, ax = plt.subplots()
ax.plot(t, s1, color='black')
ax.axhline(0, color='black', lw=2)
# s1 > 0 क्षेत्र को हरे रंग से छायांकित करें (y=0 से y=1 तक)
collection = collections.BrokenBarHCollection.span_where(
t, ymin=0, ymax=1,
where=s1 > 0, facecolor='green', alpha=0.5
)
ax.add_collection(collection)
# s1 < 0 क्षेत्र को लाल रंग से छायांकित करें (y=-1 से y=0 तक)
collection = collections.BrokenBarHCollection.span_where(
t, ymin=-1, ymax=0,
where=s1 < 0, facecolor='red', alpha=0.5
)
ax.add_collection(collection)
plt.show()
आउटपुट
प्लॉट में साइन वेव के धनात्मक भाग (0 से ऊपर) हरे रंग से और ऋणात्मक भाग (0 से नीचे) लाल रंग से छायांकित होंगे। पारदर्शिता (alpha=0.5) से ओवरलैप स्पष्ट रहता है।
मुख्य बिंदु
span_whereतार्किक शर्त (where) के आधार पर क्षेत्र भरता हैymin/ymaxऊर्ध्वाधर सीमा निर्धारित करते हैंfacecolorऔरalphaरंग और पारदर्शिता नियंत्रित करते हैं- यह दृष्टिकोण
fill_betweenसे अधिक लचीला है क्योंकि यह संग्रह (collection) लौटाता है जिसे बाद में संशोधित किया जा सकता है