假设我有以下电压与时间的数据集,由一个合适的示波器记录:
如您所见,在这次测量中,t=0 和 t=1 秒之间有一些非常快速的变化。
因此我再次记录了这个物理现象,但是现在的时间窗口更短,因此可以更好地看到噪声部分:
很好!我有两个 csv 文件,可以用 pgfplots 绘制。
我问的是如何生成这个数字:
使用 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}