J'essaie actuellement de stocker des tracés python sous forme de graphiques vectoriels pour améliorer leur apparence dans un document latex. Pour les tracés 1D, cela fonctionne très bien :
import numpy as np
import matplotlib as mpl
mpl.use('svg')
new_rc_params = {
"font.family": 'Times',
"font.size": 12,
"font.serif": [],
"svg.fonttype": 'none'} #to store text as text, not as path
mpl.rcParams.update(new_rc_params)
import matplotlib.pyplot as plt
x = np.linspace(-.5, .5, 1024)
plt.figure()
plt.plot(x, x)
plt.title('\$x = y\$')
plt.xlabel('\$x\$ [m]')
plt.ylabel('\$y\$ [m]')
plt.savefig('test.svg', format = 'svg', bbox_inches = 'tight')
De cette façon, je peux ouvrir le fichier svg dans inkscape et le convertir en pdf/pdf_tex et chaque texte du tracé sera rendu en latex dans le document --> même police et taille de police que partout ailleurs dans le document.
Les tracés 2D deviennent incroyablement gros en tant que fichiers svg. C'est pourquoi je veux stocker le tracé en pdf (encore une fois, je veux garder le texte en tant que texte. C'est pourquoi je ne peux pas stocker le tracé en .png) :
mpl.use('pdf')
new_rc_params = {
"font.family": 'Times',
"font.size": 12,
"font.serif": []
}
#"svg.fonttype": 'none'} #not needed here since we don't use svg anymore
mpl.rcParams.update(new_rc_params)
import matplotlib.pyplot as plt
x = np.linspace(-.5, .5, 1024)
x, y = np.meshgrid(x, x)
z = np.exp(-(x**2 + y**2))
plt.figure()
plt.title('Gaussian plot: \$z = \exp{-(x^2 + y^2)}\$')
plt.pcolormesh(x, y, z)
plt.colorbar()
plt.savefig('test.pdf', bbox_inches='tight', format='pdf')
Cela permet de stocker le tracé 2D sous forme de pdf. Quoi qu'il en soit, le stockage du tracé prend un certain temps maintenant et il devient assez gros (même avec seulement 500 x 500 points dans le tracé, il fait environ 11 Mo). Mais, le texte est stocké en tant que texte.
Malheureusement je ne peux pas ouvrir le pdf dans inkscape maintenant, car il se plante toujours après un certain temps. Probablement que le fichier est déjà trop gros. Des suggestions ? Un sous-échantillonnage supplémentaire pourrait fonctionner dans ce cas, mais probablement pas en général.