Matplotlib में rasterized पैरामीटर का उपयोग करके प्लॉट तत्वों को रैस्टराइज़ (वेक्टर से पिक्सेल में बदलें) किया जा सकता है, जबकि लेबल्स को वेक्टर (क्रिस्प) रखा जा सकता है।
चरण
- फिगर आकार सेट करें और पैडिंग समायोजित करें
- फिगर और सबप्लॉट्स बनाएं
- एक्सिस 0:
alphaऔरrasterized=Falseके साथ भरें - टेक्स्ट जोड़ें
- एक्सिस 1:
alphaऔरrasterized=Trueके साथ भरें - टेक्स्ट जोड़ें
- एक्सिस 2 और 3:
alphaके बिना,rasterized=True/Falseके साथ भरें - टेक्स्ट जोड़ें
plt.show()से प्रदर्शित करें
उदाहरण
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig, axes = plt.subplots(nrows=4, sharex=True)
# एक्सिस 0: alpha + rasterized=False (वेक्टर)
axes[0].fill_between(np.arange(1, 10), 1, 2, zorder=-1, alpha=0.2, rasterized=False)
axes[0].text(5, 1.5, "Label 1", ha='center', va='center', fontsize=25,
zorder=-2, rasterized=True)
# एक्सिस 1: alpha + rasterized=True (रैस्टर)
axes[1].fill_between(np.arange(1, 10), 1, 2, zorder=-1, alpha=0.2, rasterized=True)
axes[1].text(5, 1.5, "Label 2", ha='center', va='center', fontsize=25,
zorder=-2, rasterized=True)
# एक्सिस 2: बिना alpha, rasterized=True
axes[2].fill_between(np.arange(1, 10), 1, 2, zorder=-1, rasterized=True)
axes[2].text(5, 1.5, "Label 3", ha='center', va='center', fontsize=25,
zorder=-2, rasterized=True)
# एक्सिस 3: बिना alpha, rasterized=False
axes[3].fill_between(np.arange(1, 10), 1, 2, zorder=-1, rasterized=False)
axes[3].text(5, 1.5, "Label 4", ha='center', va='center', fontsize=25,
zorder=-2, rasterized=True)
plt.show()
आउटपुट
चार सबप्लॉट्स दिखाते हैं कि alpha और rasterized कैसे इंटरैक्ट करते हैं।
मुख्य अवलोकन
| सबप्लॉट | alpha | rasterized (fill) | rasterized (text) | परिणाम |
|---|---|---|---|---|
| 0 | 0.2 | False | True | भराव वेक्टर, टेक्स्ट रैस्टर (ब्लर) |
| 1 | 0.2 | True | True | दोनों रैस्टर (टेक्स्ट ब्लर) |
| 2 | नहीं | True | True | दोनों रैस्टर (कोई अल्फा, लेबल अदृश्य) |
| 3 | नहीं | False | True | भराव वेक्टर, टेक्स्ट रैस्टर |
सर्वोत्तम अभ्यास: लेबल्स को क्रिस्प रखें
# भराव रैस्टराइज़ करें, टेक्स्ट वेक्टर रखें
ax.fill_between(x, y1, y2, alpha=0.3, rasterized=True)
ax.text(x_pos, y_pos, "Label", rasterized=False) # डिफ़ॉल्ट False
कब रैस्टराइज़ करें
- बड़े डेटासेट (10,000+ बिंदु) वाले स्कैटर/लाइन प्लॉट्स
- जटिल
fill_between,pcolormesh,contourf - PDF/SVG आउटपुट फाइल साइज़ कम करने के लिए
- नहीं टेक्स्ट, लेबल, लेजेंड, अक्ष के लिए
फिगर-स्तर सेटिंग
# सभी वेक्टर ग्राफिक्स को रैस्टराइज़ करने के लिए मजबूर करें (अनुशंसित नहीं)
plt.rcParams['figure.rasterized'] = True