2015-12-21 28 views
11

जब मैं एसवीजी के रूप में आंकड़े निर्यात करने के लिए matplotlib.pyplot.savefig("test.svg", format="svg") का उपयोग करता हूं, तो परिणामस्वरूप एसवीजी फ़ाइल बहुत बड़ी होती है।पाठ के रूप में पाठ के साथ आउटपुट matplotlib आंकड़ा पाठ के रूप में पाठ,

यह इस तथ्य के कारण होता है कि मेरे आंकड़े में बहुत से टेक्स्ट एनोटेशन हैं, और प्रत्येक पाठ एसवीजी में पथ के रूप में समाप्त होता है।

मैं अपने पाठ एसवीजी में पाठ स्ट्रिंग्स, और नहीं पथ के रूप अंत करना चाहते हैं। यह भी आउटपुट की व्याख्या करने, अगर पाठ स्ट्रिंग्स इस तरह से निर्यात किया जाता है बहुत कठिन हो जाता है।

वहाँ पाठ, नहीं घटता के रूप में आउटपुट टेक्स्ट को matplotlib मजबूर करने के लिए एक तरीका है?

वर्तमान में, मैं अपने एसवीजी फ़ाइल में इन कोड के टुकड़े देखें:

<path d=" M9.8125 72.9062 L55.9062 72.9062 L55.9062 64.5938 L19.6719 
64.5938 L19.6719 43.0156 L54.3906 43.0156 L54.3906 34.7188 L19.6719 
34.7188 L19.6719 8.29688 L56.7812 8.29688 L56.7812 0 L9.8125 0 z " 
id="DejaVuSans-45" /> 

उत्तर

11

Matplotlibs एसवीजी पाठ प्रतिपादन या तो matplotlibrc में या कोड में विन्यस्त किया जा सकता। http://matplotlib.org/users/customizing.html से:

#svg.fonttype : 'path'   # How to handle SVG fonts: 
# 'none': Assume fonts are installed on the machine where the SVG will be viewed. 
# 'path': Embed characters as paths -- supported by most SVG renderers 
# 'svgfont': Embed characters as SVG fonts -- supported only by Chrome, 
#    Opera and Safari 

यह न फ़ॉन्ट एम्बेडिंग और न ही पथ के रूप में पाठ प्रतिपादन के लिए निम्न कोड के लिए अनुवाद:

import matplotlib.pyplot as plt 
plt.rcParams['svg.fonttype'] = 'none' 
+0

धन्यवाद, महान काम करता है। 'कोई नहीं' के साथ मेरी svg उत्पादन एक बहुत छोटा होता है। – Bram

+0

इन विकल्पों में पहली matplotlib के साथ कुछ भी करने से पहले तय करने की आवश्यकता है कि यह एक और एक है? – user1129682

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