Descargos de responsabilidad:
- Normalmente no programo en Python a menos que tenga que arreglar el código de otra persona
- Nunca he usado Matplotlib: este es mi primer intento de usarlo y, dado que parecía interesante, la ÚNICA razón por la que estoy publicando esta respuesta.
Ahora una respuesta más sólida: (No es que me guste hacer la tarea para los candidatos a doctorado ...)
Todo aquí fue robado, robado por completo, del sitio web matplotlib (ver ejemplos) y de Stack Overflow (matplotlib guardar el recorte de imagen de higo). Todo lo que hice fue copiarlo / pegarlo y probarlo.
El archivo out.svg resultante se puede abrir directamente en Inkscape. La imagen es un grupo / grupos de imágenes más pequeñas. Haga clic en cualquier parte de la imagen, luego use la opción 'Desagrupar' de Inkscape. Es posible que tenga que desagrupar algunas veces para poder manipular directamente parte de la imagen.
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)