Avvertenze:
- In genere non programma in Python a meno che non debba correggere il codice di qualcun altro
- Non ho mai usato Matplotlib: questo è il mio primo tentativo di utilizzo e, dato che sembrava interessante, l'UNICA ragione per cui sto postando questa risposta.
Ora una risposta più solida: (Non che mi diverta a fare i compiti per i dottorandi ...)
Tutto qui è stato rubato - rubato completamente - dal sito Web matplotlib (vedi esempi) e da Stack Overflow (matplotlib salva il taglio dell'immagine del fico). Tutto quello che ho fatto è stato copiarlo / incollarlo e testarlo.
Il file out.svg risultante può essere aperto direttamente in Inkscape. L'immagine è un gruppo / gruppi di immagini più piccole. Fai clic su qualsiasi parte dell'immagine, quindi usa l'opzione "Ungroup" di Inkscape. Potrebbe essere necessario separare alcune volte per poter manipolare direttamente parte dell'immagine.
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)