मेरे पास एक मध्यम आकार का सरणी है (उदाहरण के लिए 1500x3000) कि मैं एक छवि है क्योंकि मैं पैमाने पर साजिश करना चाहता हूं। हालांकि, लंबवत और क्षैतिज तराजू बहुत अलग हैं। सरलीकरण के लिए कहें कि एक मीटर/पंक्ति और 10/कॉलम है। साजिश तब एक छवि उत्पन्न करनी चाहिए जो सी है। 1500x30000। मैं विरूपण से बचने के लिए तराजू और पहलू = 1 के लिए kwarg सीमा का उपयोग करता हूं। या तो प्लॉटिंग विंडो (QT4) और imshow() का उपयोग करके या savefig() का उपयोग करके, मैं कभी भी स्केल पर और पूर्ण रिज़ॉल्यूशन पर छवि का उत्पादन करने में सफल नहीं हुआ।matplotlib.pyplot, imshow() और savefig() के साथ पूर्ण रिज़ॉल्यूशन पर प्लॉटिंग?
मैं के रूप में here, here, या here और there या there में संकेत मामले में यह एक बग था कई प्रस्तावित समाधान करने के लिए ध्यान दिया है। मैंने अपने matplotlibrc को बदल दिया है और इसे मेरे प्रदर्शन/savefig विकल्पों को मजबूर करने के लिए ~/.config/matplotlib में रखा है लेकिन इसका कोई फायदा नहीं हुआ है। मैंने pcolormesh() के साथ भी कोशिश की लेकिन सफलता के बिना। मैं अजगरू 14.04 और QT4Agg के रेपो से बैकएंड के रूप में पायथन 2.7 और matplotlib 1.3 का उपयोग करता हूं। मैंने TkAgg भी कोशिश की लेकिन यह धीमा है और एक ही परिणाम देता है। मेरे पास यह धारणा है कि एक्स अक्ष में संकल्प सही है लेकिन यह निश्चित रूप से ऊर्ध्वाधर दिशा में नीचे आ गया है। यहां कोड का एक टुकड़ा है जो मेरी समस्या का अनुकरण करना चाहिए।
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
R, C = 1500, 3000
DATA = np.random.random((R, C))
DATA[::2, :] *= -1 # make every other line negative
Yi, Xi = 1, 10 # increment
CMP = 'seismic'
ImageFormat ='pdf'
Name = 'Image'
DataRange = (np.absolute(DATA)).max() # I want my data centred on 0
EXTENT = [0, Xi*C, 0 ,Yi*R]
NORM = matplotlib.colors.Normalize(vmin =-DataRange, vmax= DataRange, clip =True)
for i in range(1,4):
Fig=plt.figure(figsize=(45, 10), dpi = 100*i, tight_layout=True)
Fig.suptitle(Name+str(i)+'00DPI')
ax = Fig.add_subplot(1, 1, 1)
Plot = ax.imshow(DATA, cmap=plt.get_cmap(CMP), norm = NORM, extent = EXTENT, aspect = 1, interpolation='none')
ax.set_xlabel('metres')
ax.set_ylabel('metres')
Fig.savefig(Name+str(i)+'00DPI.'+ImageFormat, format = ImageFormat, dpi = Fig.dpi)
plt.close()
imshow() में, प्रक्षेप = 'कोई नहीं' या 'निकटतम' या 'द्विरेखीय' किसी कारण से संकल्प परिवर्तन नहीं करता है, हालांकि मुझे लगता है कि अगर मैं इस शो कर इसे कम से कम क्यूटी 4 विंडो में माना जाता है() savefig() के बजाय। ध्यान दें कि संकल्प वही है जो आपने plt.figure (dpi =) में सेट किया है।
मैं इस विचार से बाहर हूं और इस प्रणाली के साथ चीजें कैसे काम करती हैं, इस बारे में मेरी समझ की सीमा पर। किसी भी मदद का बहुत स्वागत है।
अग्रिम धन्यवाद।
एक एसवीजी के रूप में एक विकल्प के रूप में बचत कर रहा है? 'plt.savefig (" test.svg ")' – Eric
मैंने ऊर्ध्वाधर रिज़ॉल्यूशन के संदर्भ में svg के रूप में सुधार सहेजने पर ध्यान नहीं दिया है। – Boorhin
मैंने कोड को संशोधित किया ताकि छवि वैकल्पिक सकारात्मक और नकारात्मक मान लंबवत हो। मुख्य विचार यह है कि यदि छवियों को पूरी तरह से हल किया गया है तो हमें नीले और लाल क्षैतिज पट्टियों को अलग करने में सक्षम होना चाहिए – Boorhin