Dibujar diagramas de MATLAB en Latex

Dibujar diagramas de MATLAB en Latex

Tengo algunas figuras 2D y 3D en MATLAB. A continuación se muestran dos muestras del mismo tipo.

ingrese la descripción de la imagen aquí

y

ingrese la descripción de la imagen aquí

¿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 loglogdiagrama con leyenda, anotaciones y símbolos individuales).

Un diagrama de registro de Matlab con leyenda y símbolos y anotaciones individuales.

Respuesta2

Si bien muchos encuentran que los matlab2tikzresultados 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.pgfplotstambié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 .datarchivos sin procesar y pgfplotsleo 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. Elpgfplotsdocumentació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}

ingrese la descripción de la imagen aquí

información relacionada