2015-12-21 5 views
11

Wenn ich matplotlib.pyplot.savefig("test.svg", format="svg") verwende, um die Figur als SVG zu exportieren, dann ist die resultierende SVG-Datei riesig.Ausgabe matplotlib Abbildung zu SVG mit Text als Text, nicht Kurven

Dies wird durch die Tatsache verursacht, dass es viele Textanmerkungen in meiner Abbildung gibt, und jeder Text endet als Pfade in der SVG.

Ich möchte, dass mein Text als Textzeichenfolgen in SVG und nicht als Pfade endet. Es wird zu schwierig, die Ausgabe auch zu interpretieren, wenn die Textstrings auf diese Weise exportiert werden.

Gibt es eine Möglichkeit, Matplotlib zu zwingen, Text als Text auszugeben, nicht als Kurve?

Derzeit sehe ich diese Code-Fragmente in meiner SVG-Datei:

<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" /> 

Antwort

11

Matplotlibs SVG Textdarstellung kann entweder in den matplotlibrc oder im Code konfiguriert werden. Von 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 

Dies führt zu dem folgenden Code für weder die Schrift einbetten noch den Text als Pfad Rendering:

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

Danke, funktioniert gut. Mit 'none' ist meine SVG-Ausgabe viel kleiner. – Bram

+0

Ist das eine weitere dieser Optionen, die eingestellt werden müssen, bevor man überhaupt etwas mit Matplotlib macht? – user1129682