У меня есть несколько 2D и 3D фигур в MATLAB. Ниже приведены два примера одного и того же рода-
и
Как включить эти рисунки в 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{figure}
Вот пример ( 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}