Avertissements:
- Je ne programme généralement pas en Python, sauf si je dois corriger le code de quelqu'un d'autre
- Je n'ai jamais utilisé Matplotlib - c'est ma première tentative d'utilisation et, comme il semblait intéressant, c'est la SEULE raison pour laquelle je poste cette réponse.
Maintenant une réponse plus robuste: (Pas que j'aime faire mes devoirs pour les doctorants ...)
Tout a été volé - à plat volé - sur le site Web de matplotlib (voir les exemples) et de Stack Overflow (matplotlib save fig image trim). Je n'ai fait que le copier / coller et le tester.
Le fichier out.svg résultant peut être ouvert directement dans Inkscape. L'image est un groupe / des groupes d'images plus petites. Cliquez sur n'importe quelle partie de l'image, puis utilisez l'option «Dissocier» d'Inkscape. Vous devrez peut-être vous dissocier plusieurs fois pour pouvoir manipuler directement une partie de l'image.
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
linewidth=0, antialiased=False)
ax.set_zlim(-1.01, 1.01)
ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))
fig.colorbar(surf, shrink=0.5, aspect=5)
#plt.show()
fig.set_size_inches(4,3)
fig.set_dpi(40)
fig.savefig('out.svg', transparent=True, bbox_inches='tight', pad_inches=0)