绘制带有可见标签的不可见轴

绘制带有可见标签的不可见轴

我一直在研究如何将原始信号绘制到 LaTeX 中,但结果发现没有好的解决方案(tikzexternalize、R+很酷knitermatlatb2tikz但如果是原始数据,则会耗尽 TeX 内存)... 无论如何,我决定立即使用 MATLAB 并将绘图导出为不带标签或刻度的 PDF,我打算在图像上添加/绘制它们。现在出现了问题:

如何绘制隐形的框架和刻度标记? 我需要ticks 来表示ticklabels,所以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,不幸的是,目前我无法分享它。不过,我可以用我使用的总体策略来帮助你。

问题 :

  • 原始数据的主要问题是,你容易溢出tikzpgfplots能力
  • 但是,您不希望 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)

使用我的自定义脚本我基本上做的是

  1. 策划一切
  2. 将所有轴属性设置为manual
  3. 隐藏数据图并使用matlab2tikz
  4. 显示数据图,隐藏轴并打印export_fig
  5. 编辑 latex 文档以添加\addplot graphics
  6. 享受

相关内容