2012-04-12 15 views
6

मुझे इस समस्या के साथ कोई और नहीं मिल रहा है। Matplotlib में, आप या तो शो() या savefig() का उपयोग करके अपने भूखंड देख सकते हैं। ये थोड़ा अलग छवियां उत्पन्न करते हैं; मेरे मामले में, savefig() छवि समझने के लिए कठिन और कठिन है। मुझे अपने परीक्षक के लिए जीवन आसान बनाना है, इसलिए ..matplotlib, savefig: डीपीआई सेटिंग को अनदेखा किया जाता है

मुझे कुछ विषय मिले जो सुझाव देते हैं कि मैंने डीपीआई आकार को शो() से मिलान करने के लिए सेट किया है। मैंने कोशिश की है:

-> सेटिंग savefig.dpi matplotlib.rcParams [ 'savefig.dpi'] = 80

के साथ सीधे -> सेटिंग ~/.matplotlib/matplotlibrc में सीधे savefig.dpi।

-> मेरी आरसी फाइल को सीडब्ल्यूडी में ले जाना।

-> अंत में, savefig का उपयोग कर ('image.pdf', डीपीआई = 80)

मुझे लगता है कि वास्तव में विशेषता सेट हो रही है सत्यापित कर सकते हैं; लेकिन ऐसा लगता है कि सेटिंग savefig() द्वारा व्यवस्थित है। क्या कोई इसके लिए सहायता कर सकता है?

(सरलीकृत) कोड:

plt.bar(ind, functimes, yerr=stddev, bottom=0, width=barWidth, align='center', color='b') 

ax = plt.gca() 
ax.legend(barRcts, barLegend) 
plt.title("Function Call Overhead") 
plt.xlabel("Function ID") 
plt.ylabel("Execution Time [us]") 

plt.xticks(ind, funcNames) 
figtest.autofmt_xdate() 

plt.savefig(out_file, dpi=80, format='pdf') 
+5

'matplotlib' वेक्टर प्रारूप में 'पीडीएफ' फाइलों को बचाता है। जब तक आपके पास बिटमैप छवियां न हों, तब तक वेक्टर छवि में डीपीआई अर्थहीन नहीं है क्योंकि वे संकल्प स्वतंत्र हैं। – Avaris

+1

आह, मैं समझता हूं। तो savefig() के साथ पीडीएफ छवियों को सहेजने का कोई तरीका नहीं है ताकि वे उन लोगों के समान हों जिन्हें आप सहेज सकते हैं (मैन्युअल रूप से) शो() के साथ? – memstick

+5

वे समान होना चाहिए। एकमात्र अंतर हो सकता है यदि आप इसे सहेजने से पहले आकृति का आकार बदलते हैं। लेकिन आप अपने आंकड़े का आकार भी सेट कर सकते हैं ('आकृति ((चौड़ाई, ऊंचाई)) 'और' savefig' इसका उपयोग करेगा। – Avaris

उत्तर

3

पीडीएफ बचत किसी भी लाइन/बहुभुज संकल्प (जो एक वेक्टर प्रारूप में कोई मतलब नहीं है) के लिए नहीं, पीडीएफ के अंदर छवि संकल्प के लिए डीपीआई सेटिंग का उपयोग करता।

यदि स्क्रीन पर आउटपुट के साथ आपकी खुशी है, और स्केलेबल ग्राफ़िक की आवश्यकता नहीं है, तो png के रूप में सहेजना शायद ठीक है।

+0

लेकिन ध्यान दें कि यदि आपने 'contourf' (उदाहरण के लिए) का उपयोग किया है तो आपको अपने पीडीएफ/एसवीजी के अंदर एक रास्टर छवि मिलती है, इसलिए डीपीआई फिर से सार्थक है। –

+0

@ChrisH - मैं सहमत नहीं हूं। Contourf वेक्टर आउटपुट रास्टर नहीं पैदा करता है। imshow हालांकि एक छवि उत्पन्न करता है (स्मृति से) सहायता करने के लिए एक छवि डीपीआई मौजूद है। एचटीएच – pelson

+1

यह पता चला है कि आप सही हैं - मेरे 5.5 एमबी। एसवीजी के अनुसार जो एक पूर्ण क्रॉल में इंकस्केप धीमा करता है। फिर डीपीआई सेटिंग्स अक्ष और ओवरलाइड लाइनों के लिए लाइनविड्थ सही प्राप्त करने में मदद करती है। मुझे कुछ समय पहले यह एहसास हुआ लेकिन लॉग इन और अपडेट करना भूल गया। –

संबंधित मुद्दे