2011-11-26 13 views
14

मैं अपने MATLAB साजिश को उच्च गुणवत्ता वाले आंकड़े के रूप में निर्यात करना चाहता हूं। विशेष रूप से, मैं इसे एक वेक्टर आधारित फ़ाइल प्रारूप जैसे ईपीएस या एसवीजी के रूप में सहेजना चाहता हूं।MATLAB और उच्च गुणवत्ता वाले ईपीएस आंकड़े

I have tried print and saveas commands: 
saveas(h,'myFileName','epsc2'); 
print('-r150','-depsc2', 'myFilename'); 

सभी अवसरों पर इस ग्राफ की खराब गुणवत्ता भागों पैदा करता है, हालांकि अक्ष-लेबल वास्तव में वेक्टर हैं। मैटलैब इसे ईपीएस में रखने से पहले कुछ भयानक प्रतिपादन क्यों करता है?

खराब गुणवत्ता साजिश यहाँ का उदाहरण: http://users.ox.ac.uk/~pemb2372/myFileName.eps

संपादित करें: यह भी ध्यान देने योग्य है कि यदि आप एक मैक मैटलैब से एक EPS फ़ाइल को देखने का उपयोग करें, 'पूर्वावलोकन' एप्लिकेशन भीतरी ग्राफ सामग्री रास्टराज़ प्रस्तुत करना हो सकता है और खराब गुणवत्ता, धुरी और लेबल वेक्टरकृत और उच्च गुणवत्ता को छोड़कर। यह बहुत भ्रामक है लेकिन जब आप ईपीएस फ़ाइल को खोलते हैं, उदाहरण के लिए, इंकस्केप, गुणवत्ता वास्तव में वेक्टर और काफी अधिक है।

संपादित करें 2: मेरा विश्वविद्यालय होस्टिंग खाता समाप्त हो गया है, इसलिए आप अब आंकड़े नहीं देख सकते हैं। यह कहने के लिए पर्याप्त है कि यह उच्च गुणवत्ता वाले सुंदर अक्ष रेखाओं, टिकों और लेबलों के भीतर एक खराब गुणवत्ता वाले रास्टर-स्टाइल प्लॉट दिखाता है।

+7

मैं समझ नहीं सकता "क्यों" Matlab की ऐसी खराब स्टॉक विशेषताएं हैं, लेकिन आप [export_fig] (https://sites.google.com/site/oliverwoodford/software/export_fig) को आजमा सकते हैं। यह मैटलैब फ़ाइल एक्सचेंज पर उपलब्ध है और मुझे बहुत मदद मिली है। यदि आपके पास पहले से नहीं है तो आपको ghostscript इंस्टॉल करने की भी आवश्यकता होगी। Export_fig के लिए – aganders3

+0

+1। –

+0

ठीक है धन्यवाद - मैं इसमें देखता हूं और – jtromans

उत्तर

9

मैटलैब ईपीएस की तुलना में बेहतर गुणवत्ता के साथ पीडीएफ में निर्यात कर सकता है, लेकिन सभ्य मार्जिन और फ़ॉन्ट आकार निर्धारित करने के अपने स्वयं के चेतावनी के साथ।

संपादित करें: उदाहरण ईपीएस मामले के समान हैं जैसा कि उदाहरण की मदद से बताया गया है print:

saveas(gcf,'filename.pdf') 

या

print('-dpdf','filename.pdf') 

आप भी अपनी आकृति की PaperSize, PaperPosition और PaperUnits गुण पर एक नज़र लेने के लिए चाहते हो सकता है (set और get कार्यों के माध्यम से)।

संपादित: एक अन्य विकल्प कार्यों पर उपलब्ध से एक का उपयोग करने के लिए है FileExchange इस तरह के नीचे user664303 @ ने उल्लेख किया लोगों के रूप में। LaTeX के साथ उपयोग के लिए मेरा निजी पसंदीदा matlab2tikz है जिसके लिए नवीनतम संस्करण GitHub से प्राप्त किया जा सकता है। TikZ की external लाइब्रेरी के साथ, मुझे लगता है कि यह आसपास के कुछ सबसे अच्छे ग्राफ प्रदान करता है। शायद यह भी है कि मैं सक्रिय रूप से किया गया है matlab2tikz परियोजना में के बाद से 2012

+0

पर रिपोर्ट करता हूं क्या आप एक उदाहरण प्रदान करने में सक्षम हैं? – jtromans

+0

मैंने कुछ छोटे उदाहरण जोड़े, कुछ भी नहीं, क्योंकि वे ईपीएस मामले के व्यावहारिक रूप से समान हैं। – Egon

+0

मूर्खतापूर्ण हालांकि, मैंने सोचा कि यह ज्ञान के इस ज्ञान को साझा करने लायक हो सकता है। इस पूरे मुद्दे के साथ मुझे समस्या होने का कारण यह था कि मैक ओएस एक्स पर 'पूर्वावलोकन' छवियों को सही ढंग से प्रस्तुत नहीं कर रहा था। इससे उन्हें और भी बदतर लग गए और मेरे मुद्दों को जोड़ दिया। पाठ, अपनी फाइलों के पिछले एक उचित छवि संपादक का उपयोग करें! Export_fig के लिए – jtromans

11

MATLAB फ़ाइल एक्सचेंज पर export_fig समारोह सही रूप में ईपीएस और पीडीएफ के आंकड़े निर्यात के एक यथोचित विश्वसनीय तरीका है (और साथ ही बिटमैप शामिल उल्लेख करने के लिए सबसे अच्छा है स्वरूप) MATLAB में।

plot2svg फ़ंक्शन, फ़ाइल एक्सचेंज से भी, आपको svg प्रारूप में निर्यात करने की अनुमति देता है। यह कुछ अतिरिक्त लाभ प्रदान करता है, जैसे वेक्टर प्रारूप में पारदर्शी पैच ऑब्जेक्ट्स निर्यात करने में सक्षम होना।

इस blog post में निर्यात विधियों की तुलना दी गई है।

+2

+1। – carlosdc

+0

'export_fig' मालिक है। –

12

मैंने सोचा कि मैं इस मुद्दे को साझा करूंगा, और मैंने इसे कैसे पार किया ...

मुझे भयानक परिणाम मिल रहे थे क्योंकि मेरे पास गलत रेंडरर डिफ़ॉल्ट रूप से सेट था। मेरे startup.m में, मेरे पास zbuffer रेंडरर सक्षम था। यह एक उदाहरण eps आउटपुट है। print(gcf,'-depsc2','filename.eps'):

Crop of output eps

मैं के साथ कि ईपीएस उत्पादन बना दिया। यह ईपीएस इतनी तेजी से rasterised है। यह मुझे matlab पर नाराज बनाता है। फिर, मेरे पास एक ब्रेनवेव था - शायद मेरा डिफ़ॉल्ट रेंडरर zbuffer छवि सहेजने की प्रक्रिया में हस्तक्षेप कर रहा है। तो, पंक्ति जोड़कर:

Crop of second output eps

ध्यान दें कि मैं सिर्फ 100% पर ईपीएस उत्पादन फ़ाइलों के स्क्रीनशॉट ले लिया:

set(gcf,'renderer','painters') 

और पहले की तरह प्रिंट आदेश चल रहा है, यहां उत्पादन होता है। और मैं पुष्टि कर सकता हूं कि दूसरी छवि वास्तव में वेक्टर है। MATLAB में Renderers चुनने पर एक अच्छा प्रश्न/स्पष्टीकरण दिया गया है।

+1

साझा करने के लिए धन्यवाद। यह मूल मुद्दा वास्तव में इतना सिरदर्द नहीं पैदा करना चाहिए! = हर किसी के लिए! – jtromans

+1

नोट: यह 'प्रिंट (..) 'कमांड के दूसरे तर्क के लिए'' -depsc2 'होना चाहिए, न कि 'depsc2''। –

+0

@EvgeniSergeev - सही, मेरा बुरा! मैंने उस सुधार में संपादित किया है। –

0

मैं हमेशा python की लाइब्रेरी द्वारा अंतिम भूखंड (जिन्हें कागजात और प्रकाशनों में डाला जाना चाहिए) प्राप्त करते हैं।

आप .pdf और .eps प्रारूप दोनों जेनरेटेड प्लॉट की अद्भुत गुणवत्ता पर शर्त लगा सकते हैं।

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