答案1
虽然我使用了pgfplots
很多,但我通常避免直接在主文档中编译图像,因此我编写了一些小tikz
宏来独立于实际文件完成这项工作pgfplots
。这几乎是我的个人喜好,但您可以按照自己想要的方式进行自定义。
\documentclass{article}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{tikz}
\usetikzlibrary{plotmarks,positioning}
\usepackage{xparse}
\NewDocumentCommand{\Surface}{m}{%
(%
\tikz[baseline=-0.6ex,inner sep=0pt, outer xsep=0pt]{%
\filldraw[#1,draw=black](0,-0.6ex) rectangle (4mm,0.6ex);%
}%
)%
}
\NewDocumentCommand{\Plot}{ m O{} }{%
(%
\tikz[baseline=-0.6ex,inner sep=0pt, outer xsep=0pt] {%
\draw[line width=1pt,text height = \textheight,#1] plot coordinates {(0,0)} -- plot[#2,mark options={solid}, mark size=2pt] coordinates {(2mm,0)} -- plot coordinates {(4mm,0)};%
}%
)%
}
\begin{document}
\begin{figure}
\centering
\includegraphics{example-image-duck}
\caption{This is a plot \Plot{blue,dotted}[mark=*], this is a surface \Surface{red}}
\end{figure}
\end{document}
答案2
如果图表是由 Matlab 生成的,您可以导出要用其绘制的数据文件pgfplots
。
例如,可以使用以下方法从 matlab 导出矩阵csvwrite
一旦有了数据文件,您就可以执行以下操作:
\begin{filecontents}{exported-from-matlab.dat}
1 1
2 2
3 3
4 4
\end{filecontents}
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{figure}[tb]
\centering
\begin{tikzpicture}
\begin{axis}[]
\addplot table {exported-from-matlab.dat}; \label{norm-dist}
\end{axis}
\end{tikzpicture}
\caption{\ref{norm-dist} set of data}
\end{figure}
\end{document}