Tenho algumas figuras 2D e 3D no MATLAB. Abaixo estão duas amostras do mesmo tipo-
e
Como incluir esses números no LaTeX? Até agora estou incluindo a imagem PNG exportada, mas ela não parece suave enquanto o documento é ampliado.
Responder1
ConfiraMatlab2TikZ. Isso usa TikZ para gerar os números em tempo de compilação.
No lado do matlab, você usa 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}'});
E no lado LaTeX, codifique assim:
\begin{figure}[htbp]
\centering
\setlength\figureheight{8cm}
\setlength\figurewidth{0.8\textwidth}
\input{PATH/FILE.tikz}
\caption{Caption Text.}
\label{fig:figureLabel}
\end{figura}
Aqui está um exemplo (um loglog
gráfico com legenda, anotações e símbolos individuais).
Responder2
Embora muitos considerem os matlab2tikz
resultados satisfatórios, gosto da oportunidade de usar minhas próprias macros nos gráficos, para que, se minha notação mudar, todo o documento, incluindo os gráficos, seja atualizado. Dessa forma, sou quase sempre consistente em meu trabalho.
Escrevendo os gráficos à mão usando recursos nativospgfplots
também produz código mais limpo, mais facilmente modificável e mais compacto do que os métodos gerados automaticamente. Há uma certa curva de aprendizado, mas acho que o investimento para aprender vale a pena.
Eu simplesmente faço com que o MATLAB ou qualquer outro código de processamento de números produza .dat
arquivos brutos e pgfplots
leia os dados deles. Portanto, se eu executar novamente meu código e recompilar meu documento, os resultados serão atualizados automaticamente.
Eu não tinha seus dados de dispersão, então criei alguns "dados fictícios" usando funções e números aleatórios para o primeiro gráfico. Comentei cada opção para vocês verem de onde vem cada elemento da trama. Opgfplots
documentaçãoé um dos melhores do ramo e você pode encontrar mais detalhes sobre todas as opções lá.
\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}