Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Matplotlib में लेबल ब्लर किए बिना प्लॉट को बेहतर तरीके से रैस्टराइज़ करें

Matplotlib में rasterized पैरामीटर का उपयोग करके प्लॉट तत्वों को रैस्टराइज़ (वेक्टर से पिक्सेल में बदलें) किया जा सकता है, जबकि लेबल्स को वेक्टर (क्रिस्प) रखा जा सकता है।

चरण

  1. फिगर आकार सेट करें और पैडिंग समायोजित करें
  2. फिगर और सबप्लॉट्स बनाएं
  3. एक्सिस 0: alpha और rasterized=False के साथ भरें
  4. टेक्स्ट जोड़ें
  5. एक्सिस 1: alpha और rasterized=True के साथ भरें
  6. टेक्स्ट जोड़ें
  7. एक्सिस 2 और 3: alpha के बिना, rasterized=True/False के साथ भरें
  8. टेक्स्ट जोड़ें
  9. 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 कैसे इंटरैक्ट करते हैं।

मुख्य अवलोकन

सबप्लॉटalpharasterized (fill)rasterized (text)परिणाम
00.2FalseTrueभराव वेक्टर, टेक्स्ट रैस्टर (ब्लर)
10.2TrueTrueदोनों रैस्टर (टेक्स्ट ब्लर)
2नहींTrueTrueदोनों रैस्टर (कोई अल्फा, लेबल अदृश्य)
3नहींFalseTrueभराव वेक्टर, टेक्स्ट रैस्टर

सर्वोत्तम अभ्यास: लेबल्स को क्रिस्प रखें


# भराव रैस्टराइज़ करें, टेक्स्ट वेक्टर रखें
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
  1. Matplotlib में लॉग-प्लॉट के माइनर टिक्स कैसे डिसेबल करें? Matplotlib में लॉग-प्लॉट के माइनर टिक्स कैसे डिसेबल करें?

    लॉग स्केल प्लॉट में माइनर टिक्स हटाने के लिए plt.minorticks_off() कॉल करें। चरण फिगर साइज़ और ऑटोलेआउट सेट करें। रैंडम डेटा जनरेट करें। पहला सबप्लॉट: लॉग स्केल के साथ माइनर टिक्स (डिफ़ॉल्ट)। दूसरा सबप्लॉट: लॉग स्केल के साथ plt.minorticks_off()। दोनों में टाइटल दें और plt.show() से तुलना करें। उदाह

  1. Matplotlib हिस्टोग्राम प्लॉट में लेबल्स को सेंटर में कैसे करें? Matplotlib हिस्टोग्राम प्लॉट में लेबल्स को सेंटर में कैसे करें?

    हिस्टोग्राम बार्स के सेंटर पर टिक लेबल्स रखने के लिए प्रत्येक पैच का मिडपॉइंट कैलकुलेट करके xticks() में पास करें। चरण फिगर साइज़ और ऑटोलेआउट सेट करें। रैंडम नॉर्मल डेटा और बिन्स काउंट सेट करें। plt.hist() से हिस्टोग्राम बनाएं (n, bins, patches रिटर्न)। प्रत्येक पैच के लिए (patch._x0 + patch._x1)/2

  1. Matplotlib में सबप्लॉट्स में टिक लेबल्स का घनत्व कैसे कम करें? Matplotlib में सबप्लॉट्स में टिक लेबल्स का घनत्व कैसे कम करें?

    Matplotlib में सबप्लॉट्स में टिक लेबल्स का घनत्व कम करने के लिए, हम न्यूनतम मान को डेंसिटी को असाइन कर सकते हैं। चरण वेरिएबल density इनिशियलाइज़ करें। NumPy का उपयोग करके x और y डेटा पॉइंट्स बनाएं। plot() मेथड का उपयोग करके x और y डेटा पॉइंट्स प्लॉट करें। xticks() मेथड का उपयोग करके X-अक्ष