2015-12-21 13 views
11

Quando uso matplotlib.pyplot.savefig("test.svg", format="svg") per esportare la figura come SVG, il file SVG risultante è enorme.Emetti matplotlib figure in SVG con testo come testo, non curve

Questo è causato dal fatto che nella mia figura ci sono molte annotazioni di testo e ogni testo finisce come tracciato in SVG.

Voglio che il mio testo finisca come stringhe di testo in SVG e non in percorsi. Diventa troppo difficile interpretare l'output anche se le stringhe di testo vengono esportate in questo modo.

C'è un modo per forzare matplotlib per l'output del testo come testo, non curve?

Attualmente, vedo questi frammenti di codice nel mio file in formato SVG:

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

risposta

11

Matplotlibs SVG rendering del testo può essere configurato sia in matplotlibrc o nel codice. Da 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 

Questo si traduce al seguente codice per l'incorporamento né il carattere né il rendering del testo come percorso:

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

Grazie, funziona alla grande. Con 'none' il mio output SVG è molto più piccolo. – Bram

+0

È un'altra di queste opzioni che è necessario impostare prima di eseguire prima qualcosa con matplotlib? – user1129682

Problemi correlati