为两个不相关的图绘制插图

为两个不相关的图绘制插图

假设我有以下电压与时间的数据集,由一个合适的示波器记录:

图片1

如您所见,在这次测量中,t=0 和 t=1 秒之间有一些非常快速的变化。

因此我再次记录了这个物理现象,但是现在的时间窗口更短,因此可以更好地看到噪声部分:

图片2

很好!我有两个 csv 文件,可以用 pgfplots 绘制。

我问的是如何生成这个数字:

图3,插图

使用 tikz 的spy库,您可以放大 TikZ 图片的某个部分。

上图与 tikz 的工具外观非常相似spy,但是它由两个“完全不相关”的图组成。spy仅适用于制作一个图的插图。

有人有想法吗?

笔记:这些图是用德斯莫斯和 Windows 画图。如果你想发表答案,那么用三角形窥视的圆圈也不错。这个摆动的不切实际的波形只是为了演示目的,以澄清这个想法。

谢谢!

更新:

我现在阅读了 tikz 手册并遇到了坐标变换子部分(25.3)。

我刚刚运行了以下代码,编译成功:

\documentclass[border=2pt]{standalone}
\usepackage{tikz,pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
grid=major,
]
\addplot[samples=10,domain=0:2]{x^2-2};
\end{axis}
\begin{scope}[xshift=8em,yshift=-20em]
\begin{axis}[
grid=major,
]
\addplot[samples=10,domain=-3:2]{-x^2+2};
\end{axis}
\end{scope}
\draw[red,thick] (0,0) -- (2,1); % <--- A decoration
\end{tikzpicture}
\end{document}

两块地分开

所以我得到了两个不同的axis环境,彼此之间由 分隔开{scope}[xshift , yshift]。现在我添加了一条从 (0,0) 到 (2,1) 的粗红线,但这两个坐标并不遵循(第一个)绘图坐标系,正如您从轴刻度中看到的那样。

我把它改成了

\draw[red,thick] (axis cs:0,0) -- (2,1);

并出现错误

缺少插入的 \endcsname。\pgfcrdmth@x l.18 \draw[red,thick] (axis cs:0,0) -- (2,1); ?

所以我需要给这个坐标系命名,这样 TeX 才知道我引用的是谁?我该怎么做?

答案1

您正在寻找其中的一个吗?

\documentclass[border=2pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{tikzpicture}
\begin{axis}[name=axis A,
grid=major,
]
\addplot[samples=10,domain=0:2]{x^2-2};
\end{axis}
\begin{scope}[xshift=8em,yshift=-20em]
\begin{axis}[name=axis B,
grid=major,
]
\addplot[samples=10,domain=-3:2]{-x^2+2};
\end{axis}
\end{scope}
\draw[red,thick] (axis A.north east) -- (axis B.north east)
(axis A.south west) -- (axis B.south west);
\end{tikzpicture}

\begin{tikzpicture}
\begin{axis}[grid=major,
]
\addplot[samples=10,domain=0:2]{x^2-2};
\draw (0,-2) coordinate (bl) rectangle (1,2) coordinate (tr);
\end{axis}
\begin{scope}[xshift=8em,yshift=-20em]
\begin{axis}[name=axis B,
grid=major,
]
\addplot[samples=10,domain=-3:2]{-x^2+2};
\end{axis}
\end{scope}
\draw[red,thick] (tr) -- (axis B.north east)
(bl) -- (axis B.south west);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

在本例中,我将底层图形作为图像导入,因此您可以专注于 的语法\stackinset,其中我将参数#5(“间谍”框)放置在参数#6(底层图形)之上,在本例中,对齐在右下角。但是,您可以将每个\includegraphics调用替换为(在本例中为 3cm x 3cm)tikz 绘图,或者您可以在模式下创建它们standalone并导入它们,就像我在这里所做的那样。

关键是按照您喜欢的大小布置这两个图像,这将为您提供用于“间谍”框的图形坐标。

\documentclass{article}
\usepackage{tikz,stackengine}
\begin{document}
\stackinset{r}{}{b}{}{%
\begin{tikzpicture}
\draw [thick] (1,0) -- (4,0) -- (4,3) -- (1,3) -- (1,0);
\draw [thick] (.25,4) -- (.75,4) -- (.75,6) -- (.25,6) -- (.25,4);
\draw [thick] (.25,4) -- (1,0);
\draw [thick] (.75,6) -- (4,3);
\end{tikzpicture}%
}{%
  \stackon[.5cm]
    {\kern1cm\includegraphics[width=3cm,height=3cm]{example-image-a}}%
    {\includegraphics[width=3cm,height=3cm]{example-image-b}\kern1cm}%
}
\end{document}

在此处输入图片描述

使用 OP 的示例图,我可以适应。但是,我强烈建议以您知道图像确切大小的方式设置图表。此外,虽然两个图表都是在一张tikz图片中完成的,但将它们堆叠为两个单独的结构可能会更简单tikz

\documentclass{article}
\usepackage{stackengine}
\usepackage{tikz,pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\stackinset{r}{.2cm}{b}{.5cm}{%
\begin{tikzpicture}
\draw [thick] (3.3,0) -- (10,0) -- (10,5.5) -- (3.3,5.5) -- (3.3,0);
\draw [thick] (.5,7.0) -- (2,7.0) -- (2,8.5) -- (.5,8.5) -- (.5,7.0);
\draw [thick] (.5,7.0) -- (3.3,0);
\draw [thick] (2,8.5) -- (10,5.5);
\end{tikzpicture}%
}{%
\begin{tikzpicture}
\begin{axis}[
grid=major,
]
\addplot[samples=10,domain=0:2]{x^2-2};
\end{axis}
\begin{scope}[xshift=8em,yshift=-20em]
\begin{axis}[
grid=major,
]
\addplot[samples=10,domain=-3:2]{-x^2+2};
\end{axis}
\end{scope}
\draw[red,thick] (0,0) -- (2,1); % <--- A decoration
\end{tikzpicture}
}
\end{document}

在此处输入图片描述

相关内容