我一直在研究如何将原始信号绘制到 LaTeX 中,但结果发现没有好的解决方案(tikzexternalize
、R+很酷kniter
,matlatb2tikz
但如果是原始数据,则会耗尽 TeX 内存)... 无论如何,我决定立即使用 MATLAB 并将绘图导出为不带标签或刻度的 PDF,我打算在图像上添加/绘制它们。现在出现了问题:
如何绘制隐形的框架和刻度标记?
我需要tick
s 来表示ticklabel
s,所以hide axis
这不是一个选项。我觉得这是一些pgfplot style
-thing,完全超出了我的能力范围。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0cm] at (0,0) {\includegraphics[width=\textwidth]{constant-plot.png}};
\begin{axis}[
scale only axis,
width = 9.65cm,
height = 7.93cm,
xshift=1.84cm,
yshift=1.47cm,
xmin=-0.1,
xmax=1.1,
ymin=0.05,
ymax=0.7,
ytick={0.2,0.4,...,0.6},
color=green,
every tick/.style={green}
]
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
我刚刚从pgfplots.net。
我不知道这是否是将外部图形与基于 Tex 的字体/标签链接起来的正确方法,但我没有看到其他选择。
答案1
只需添加axis line style={opacity=0}
。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0cm] at (0,0)
{\includegraphics[width=\textwidth]{example-image-duck}};
\begin{axis}[axis line style={opacity=0},
scale only axis,
width = 9.65cm,
height = 7.93cm,
xshift=1.84cm,
yshift=1.47cm,
xmin=-0.1,
xmax=1.1,
ymin=0.05,
ymax=0.7,
ytick={0.2,0.4,...,0.6},
color=green,
every tick/.style={green}
]
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
但是,根据您的描述,您可能正在寻找4.3.7 使用外部图形作为绘图源。
答案2
免责声明:我的回答与绘制大块数据的问题更相关,而不是 OP 的技术解决方案。如果觉得不相关,我很乐意将其删除。
对于我的论文,我遇到了相当类似的问题。我根据脚本开发了一个覆盖层matlab2tikz
,不幸的是,目前我无法分享它。不过,我可以用我使用的总体策略来帮助你。
问题 :
- 原始数据的主要问题是,你容易溢出
tikz
或pgfplots
能力 - 但是,您不希望 matlab 绘制轴、图例或标签,否则您就不会问这个问题了。
策略:
- 让 matlab 完成繁重的工作并创建原始地块然后删除隐藏轴和相关图形。对于此操作,我使用了
export_fig
包,它能够导出 png 图,并且不会出现 matlab 打印过程中的大多数缺陷。 pgfplots
使用graphics
绘图将打印的图像插入轴中\addplot[] graphics[xmin=...,xmax=...,ymin=...,ymax=...] {path/to/your/picture};
如上所述pgfplots manual
第 4.3.7 节(v1.16)
使用我的自定义脚本我基本上做的是
- 策划一切
- 将所有轴属性设置为
manual
- 隐藏数据图并使用
matlab2tikz
- 显示数据图,隐藏轴并打印
export_fig
- 编辑 latex 文档以添加
\addplot graphics
- 享受