मैं दोनों सेटिंग्स अन्य टिप्पणी पर दिए गए
cbar.solids.set_rasterized(True)
cbar.solids.set_edgecolor("face")
की कोशिश की, अर्थात् और दुर्भाग्य से न तो मेरे लिए काम किया।
इसलिए मैंने एक पूरी तरह से अलग दृष्टिकोण की कोशिश की जो एक बड़ा हैक है, लेकिन कम से कम काम पूरा हो जाता है। जब आप alpha
से imshow
पास करते हैं तो यह अल्फा मान सेट करता है जिसका उपयोग अन्य छवियों के साथ मिश्रण करने के लिए किया जाएगा। उच्च शक्ति के कारणों के कारण (जैसा कि @ एमएफआरए ने उल्लेख किया है) यह उन सफेद रेखाओं को बनाता है जिन्हें हम तुच्छ मानते हैं। स्पष्ट रूप से कुंजी imshow
पर अल्फा मान पास करें। हालांकि, हमें अभी भी रंगीन रंग बनाने की जरूरत है।
इस प्रकार एक वर्कअराउंड के रूप में हम imshow
पर रंगमंच देने से पहले अल्फा मिश्रण कर सकते हैं। उदाहरण के लिए, के winter
रंग मैप का उपयोग करते हैं:
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
xx, yy = np.meshgrid(np.linspace(-1, 1, 100), np.linspace(-1, 1, 100))
zz = xx**2 + yy**2
my_cmap_rgb = plt.get_cmap('winter')(np.arange(256))
alpha = 0.5
for i in range(3): # Do not include the last column!
my_cmap_rgb[:,i] = (1 - alpha) + alpha*my_cmap_rgb[:,i]
my_cmap = mpl.colors.ListedColormap(my_cmap_rgb, name='my_cmap')
यहाँ मैं एक नया रंग मैप, my_cmap_rgb
बनाने के लिए, winter
के आधार पर और फिर गैर अल्फा चैनलों को संपादित (0, 1 और 2) अपने आप सम्मिश्रण अल्फा करने के लिए । मैं बस अपने आंकड़े को साकार करने के लिए इस नए रंगमंच का उपयोग कर सकता हूं।
f, ax = plt.subplots()
cim = ax.imshow(zz, cmap=my_cmap)
cbar = plt.colorbar(cim)
ax.set_title("No lines and no transparency")
अब यह छवि आप इस चाल के बिना प्राप्त होता के साथ तुलना करें: यदि आप कोई पारदर्शिता की आवश्यकता होती है
f, ax = plt.subplots()
cim = ax.imshow(zz, cmap='winter', alpha=0.5)
cbar = plt.colorbar(cim)
ax.set_title("Lines and transparency")
जाहिर है समस्या हल हो रहा है। दूसरी तरफ, यदि आपको पारदर्शिता की आवश्यकता है, तो एक और कामकाज है। आपको कलरबार प्राप्त करने के लिए पारदर्शीता के बिना एक छवि को प्लॉट करना होगा, और फिर पारदर्शिता के साथ एक प्लॉट करें, लेकिन जिसका रंग पट्टी का उपयोग नहीं किया जाएगा।
f, ax = plt.subplots()
cim = ax.imshow(zz, cmap=my_cmap)
cbar = plt.colorbar(cim)
plt.cla() # Clears axis
ax.plot(50,50, 'ko')
ax.imshow(zz, cmap='winter', alpha=0.5)
ax.set_title("No lines and transparency")
यह एक ऐसी छवि में परिणाम देता है जिसकी कलरबार में कोई रेखा नहीं है और फिर भी पारदर्शिता बरकरार है। हालांकि यह एक बड़े पैमाने पर हैक बना हुआ है, कम से कम हमें इन लाइनों के साथ आगे बढ़ना नहीं है!
क्या आपने इस आकृति को विभिन्न प्रारूपों में सहेजने की कोशिश की है? यदि हां, तो क्या आपको हमेशा ये समस्याएं मिलती हैं? –
मैंने इसे केवल अल्फा के परिणामस्वरूप देखा है, क्या आप वास्तव में अल्फा = 1.0 के साथ ही यह सुनिश्चित करते हैं? –
हां, यह पीएनजी के साथ होता है, लेकिन मैंने इसका निवारण नहीं किया। हां, मैंने इसे एसवीजी के साथ अल्फा = 1.0 के लिए देखा। – jseabold