2012-08-30 12 views
30

मेरे पास एक बड़ी प्रक्रिया है जो कार्यों (लगभग 600) से बना है, और मैंने एक ऑर्डर बनाया है जिसे वे लॉन्च किए गए ऑर्डर को देखते हैं और वे कितना समय लेते हैं। ऐसा करने के लिए, मैंने matplotlib और एक बारह का उपयोग किया।matplotlib - विवरण देखने के लिए संकल्प बढ़ाएं

आंकड़ा ठीक है (मेरी 1 matplotlib सफलता!) है, लेकिन:

  • मैं विवरण देखने और जब निर्यात चित्र पर ज़ूम (PNG के रूप में, उदाहरण के लिए), ज़ूम विकल्प के रूप में चाहते हैं जब matplotlib show() आदेश के रूप में this other SO post में कहा
  • Y अक्ष की किंवदंतियों बहुत करीब और अपठनीय

मैं संकल्प को बढ़ाने के लिए करने की कोशिश की है, यह बेहतर है, लेकिन जानकारी के सटीक नहीं हैं साथ परिणाम प्रदर्शित करता है की अनुमति देता है पर्याप्त। यहाँ मेरी परिणाम अब तक कर रहे हैं:

  • पूर्ण परिणाम matplotlib साथ

full

  • ज़ूम

zoom

आप जानते हैं कि कैसे मैं पठनीयता में सुधार कर सकता है क्या ? बहुत बहुत धन्यवाद (अन्यथा, मेरे सभी प्रयास बेकार होंगे, मुझे डर है ...)

पीएस: मैं matplotlib 1.1.1 और पायथन 2.7 का उपयोग कर रहा हूं।

+0

रिज़ॉल्यूशन ठीक दिखता है। मुझे लगता है कि आपकी बात अक्ष पर पठनीयता है? धुरी लेबल के लिए फ़ॉन्ट आकार को कम करने का प्रयास करें। अगर कुछ और है, तो आप जो चाहते हैं उसके बारे में आपको स्पष्ट करना होगा। सर्वोत्तम रिज़ॉल्यूशन के लिए, पोस्टस्क्रिप्ट या पीडीएफ में निर्यात करें; ये प्रारूप वेक्टर आधारित हैं, और आमतौर पर पूर्ण संकल्प रखते हैं। बस ध्यान रखें कि ऐसी फाइलें इस तरह से बड़ी हो सकती हैं (और उत्पन्न होने में थोड़ी देर लगें)। यदि आप एक पीएनजी चाहते हैं, तो इसे सामान्य रिज़ॉल्यूशन (डीपीआई) के साथ एक विशाल आंकड़ा बनाएं; यह पीएनजी जैसे रास्टरराइज्ड छवि प्रकार के निहित है कि आप अंतहीन रूप से ज़ूम इन नहीं कर सकते हैं। – Evert

+0

मैंने अभी कुछ और करने की कोशिश की है: अक्ष पर लेबलिंग के बजाय एनोटेशन जोड़ना।लेकिन एक ही समस्या बनी हुई है: क्योंकि मेरे पास 600 से अधिक मूल्य हैं, यहां तक ​​कि 'xx-small' fontsize भी पर्याप्त नहीं है। मुझे वास्तव में क्या पसंद है कि एनोटेशन टेक्स्ट आकार चार्ट आइटम के समान ऊंचाई है, क्या यह संभव है? तो मैं बस एक बहुत बड़ा संकल्प उत्पन्न करता हूं, ताकि मैं जितना चाहूं ज़ूम कर सकूं। – Emmanuel

+2

क्या होगा यदि आप एक बहुत बड़ी आकृति बनाते हैं? यह काम करेगा यदि फ़ॉन्ट आकार स्केल नहीं करता है (क्योंकि यह सामान्य रूप से बिंदुओं में परिभाषित किया गया है), लेकिन बार आकृति आकार के साथ स्केल करते हैं। बेशक, इस तरह की एक आकृति "चारों ओर खींचें" या प्रिंट करने के लिए थोड़ा अजीब है, लेकिन उस बिंदु पर, आप इसे पुन: सहेज सकते हैं। या, एक सामान्य आकार के आकृति के लिए, एक स्ट्रिंग के बजाय 1 (पूर्णांक) के फोंटिज़ का उपयोग करने का प्रयास करें। यह मेरे लिए काम किया। – Evert

उत्तर

14

बस रिकार्ड के लिए, मैं सुझाव यहां एक संभावित जवाब के साथ ही मेरी दूसरी टिप्पणी में किया डाल देंगे। यह हमेशा काम कर सकते हैं नहीं है, लेकिन एक परीक्षण अच्छे परिणाम दिखाता है:

import pylab as pl 
pl.figure(figsize=(7, 7)) # Don't create a humongous figure 
pl.annotate(..., fontsize=1, ...) # probably need the annotate line *before* savefig 
pl.savefig('test.pdf', format='pdf') # no need for DPI setting, assuming the fonts and figures are all vector based 

यह भी आंशिक fontsizes (जैसे fontsize=0.1) काम करता दिखाई देता है। आपका माइलेज भिन्न हो सकता है: मैंने केवल पीडीएफ बैकएंड के साथ इसका परीक्षण किया है, न कि ईपीएस एक।

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

31

मैं बहुत छोटे फ़ॉन्ट के साथ एक बहुत बड़े संकल्प का उपयोग करके Evert की सलाह पर ऐसा करने में कामयाब रहा। यहाँ सबसे महत्वपूर्ण कदम हैं:

import pylab as pl 
pl.figure(figsize=(70, 70)) # This increases resolution 
pl.savefig('test.eps', format='eps', dpi=900) # This does, too 
pl.annotate(..., fontsize='xx-small', ...) 
संबंधित मुद्दे