Tengo algunas figuras 2D y 3D en MATLAB. A continuación se muestran dos muestras del mismo tipo.
y
¿Cómo incluir estas figuras en LaTeX? Hasta ahora incluyo la imagen PNG exportada, pero no se ve fluida cuando el documento está ampliado.
Respuesta1
VerificarMatlab2TikZ. Esto utiliza TikZ para generar las cifras en tiempo de compilación.
En el lado de Matlab, usas un código como este:
matlab2tikz( '/PATH/FILE.tikz','height','\figureheight','width','\figurewidth',...
'extraAxisOptions',{'tick label style={font=\footnotesize}'}, ...
'extraAxisOptions',{'y tick label style={/pgf/number format/.cd, fixed, fixed zerofill, precision=2, /tikz/.cd}'});
Y en el lado de LaTeX, codifique como este:
\begin{figure}[htbp]
\centering
\setlength\figureheight{8cm}
\setlength\figurewidth{0.8\textwidth}
\input{PATH/FILE.tikz}
\caption{Caption Text.}
\label{fig:figureLabel}
\end{figura}
Aquí hay un ejemplo (un loglog
diagrama con leyenda, anotaciones y símbolos individuales).
Respuesta2
Si bien muchos encuentran que los matlab2tikz
resultados son satisfactorios, a mí me gusta la oportunidad de usar mis propias macros en los gráficos, de modo que si mi notación cambia, todo el documento, incluidos los gráficos, se actualizará solo. De esta manera, casi siempre soy consistente en mi trabajo.
Escribir las tramas a mano usando nativos.pgfplots
también produce código más limpio, más fácilmente modificable y más compacto que los métodos generados automáticamente. Hay una pequeña curva de aprendizaje, pero creo que la inversión para aprender vale la pena.
Simplemente tengo MATLAB o cualquier otro código de procesamiento de números que genera .dat
archivos sin procesar y pgfplots
leo los datos de ellos. Entonces, si vuelvo a ejecutar mi código y luego vuelvo a compilar mi documento, los resultados se actualizan automáticamente.
No tenía sus datos de dispersión, así que creé algunos "datos ficticios" usando funciones y números aleatorios para el primer gráfico. Comenté cada opción para que veas de dónde viene cada elemento de la trama. Elpgfplots
documentaciónes uno de los mejores en el negocio y puede encontrar más detalles sobre todas las opciones allí.
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
only marks, % no lines
xmin=0, xmax=200, % x-axis limits
ymin=0, ymax=300, % y-axis limits
xlabel={Dissimilarities}, % x-axis label
ylabel={Distances}, % y-axis label
title={Morse Signal Analysis}, % plot title
legend pos=north west, % legend position on plot
legend cell align=left, % text alignment within legend
domain=20:180, % domain for plotted functions (not needed for scatter data)
samples=200, % plot 200 samples
]
\addplot[mark=o,blue] {x^2/200 + rand*x/3}; % add the first plot
\addlegendentry{Stress}; % add the first plot's legend entry
\addplot[mark=+,red] {x^2/200 + rand*x/2}; % ...
\addlegendentry{Sammon Mapping};
\addplot[mark=triangle,green] {x^2/200 + rand*x/1.5};
\addlegendentry{Squared Stress};
\end{axis}
\end{tikzpicture}
\bigskip
\begin{tikzpicture}
\begin{axis}[
grid=major, % draw major gridlines
major grid style=dotted, % dotted grid lines
colormap/jet, % colormap from MATLAB
samples=30, % 30 samples in each direction
view={140}{30}, % configure plot view
domain=-3:3, % x varies from -3 to 3
y domain=-3:3, % y varies from -3 to 3
zmin=-10, zmax=10, % z-axis limits
xlabel={$x$}, % x-axis label
xtick={-3,-2,...,3}, % integer-spaced tick marks on the x-axis
ylabel={$y$}, % y-axis label
title={$y^2 - x^2$}, % plot title
]
\addplot3[mesh] {y^2-x^2}; % make the mesh plot
\end{axis}
\end{tikzpicture}
\end{document}