MATLAB에 2D 및 3D 수치가 있습니다. 아래는 같은 종류의 샘플 2개입니다.
그리고
LaTeX에 이러한 수치를 포함시키는 방법은 무엇입니까? 지금까지는 내보낸 PNG 이미지를 포함했지만 문서를 확대하는 동안에는 매끄럽게 보이지 않습니다.
답변1
확인해 보세요Matlab2TikZ. 이는 TikZ를 사용하여 컴파일 타임에 수치를 생성합니다.
MATLAB 측에서는 다음과 같은 코드를 사용합니다.
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}'});
LaTeX 측에서는 다음과 같이 코드를 작성합니다.
\begin{figure}[htbp]
\centering
\setlength\figureheight{8cm}
\setlength\figurewidth{0.8\textwidth}
\input{PATH/FILE.tikz}
\caption{Caption Text.}
\label{fig:figureLabel}
\end{그림}
여기에 예가 있습니다( loglog
범례, 주석 및 개별 기호가 포함된 플롯).
답변2
많은 사람들이 결과가 만족스럽다고 생각하지만 matlab2tikz
, 나는 플롯에 나만의 매크로를 사용할 수 있는 기회를 좋아합니다. 따라서 표기법이 변경되면 플롯을 포함한 전체 문서가 자동으로 업데이트됩니다. 이런 식으로 나는 거의 항상 내 작업에 일관성을 유지합니다.
네이티브를 사용하여 직접 플롯 작성pgfplots
또한 자동 생성된 메서드보다 더 깔끔하고 쉽게 수정 가능하며 더 컴팩트한 코드를 생성합니다. 약간의 학습 곡선이 있지만 배우기 위한 투자는 그만한 가치가 있다고 생각합니다.
저는 단순히 MATLAB이나 다른 숫자 계산 코드를 사용하여 원시 .dat
파일을 출력하고 pgfplots
그로부터 데이터를 읽습니다. 따라서 코드를 다시 실행한 다음 문서를 다시 컴파일하면 결과가 자동으로 업데이트됩니다.
분산형 데이터가 없었기 때문에 첫 번째 플롯에 함수와 난수를 사용하여 "더미 데이터"를 만들었습니다. 플롯의 각 요소가 어디에서 왔는지 확인할 수 있도록 각 옵션에 주석을 달았습니다. 그만큼pgfplots
선적 서류 비치업계 최고의 제품 중 하나이며 여기에서 모든 옵션에 대한 자세한 내용을 확인할 수 있습니다.
\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}