Solución:
Es decepcionante pero, el valor predeterminado de MATLAB saveas
y print
Los comandos no pueden tratar muy bien con cosas transparentes. Tendrá que guardarlo con algunos antecedentes y luego convertirlo a través de imread
/imwrite
o alguna otra herramienta.
Hay algunas herramientas que pueden resultar útiles:
- Exportar fig http://www.mathworks.com/matlabcentral/fileexchange/23629
- exportación de svg http://www.mathworks.com/matlabcentral/fileexchange/7401-scalable-vector-graphics-svg-export-of-figures
Prefiero los gráficos vectoriales, así que use exportaciones svg cuando se necesite transparencia. Si de hecho tiene un mapa de bits, use imwrite(bitmapData, 'a.png', 'png', 'transparency', backgroundColor)
.
Las cosas han cambiado desde el lanzamiento de MATLAB 2014b. El sistema de gráficos recientemente implementado (llamado HG2, para Handle Graphics versión 2) funciona mucho mejor en términos de transparencia.
¡Ahora guarda la transparencia correctamente en SVG al menos!
Así que todavía quería algo simple que no me obligara a instalar nada más (PC corporativa no permitida: /). Me topé con este enlace, diciendo:
Todo lo que tienes que hacer es lo siguiente
1) En el archivo matlab, agregue los comandos para formatear su figura con fondo transparente
set(gcf, 'color', 'none');
set(gca, 'color', 'none');
y guardar o exportar la figura generada en formato eps. (diga Bspline.eps)
2) Abra Bspline.eps en el Bloc de notas
3) Mira la primera línea. Por ejemplo %!PS-Adobe-3.0 EPSF-3.0
. El último número 3.0 indica el nivel Postscript. Para el nivel 3, busque la cadena rf
. Encontrarás en una línea como esta (cuatro números seguidos de rf
)
0 0 3025 2593 rf% Comente esa línea usando%.
(Para la búsqueda de nivel 2 de cadena pr
en lugar de rf
)
Guarda el archivo.
Ahora puede usar el archivo eps o puede convertirlo a pdf y luego usarlo. De todos modos tendrá fondo transparente.
Extra
Para mí fueron dos líneas con re
y dos líneas, a pesar de tener %!PS-Adobe-3.0 EPSF-3.0
uno tras otro. Pero el resultado fue el Figure
ahora era transparente.