我想像使用库一样放大图,但我希望 spy-in 节点包含自己的刻度和刻度标签,网格比原始图更细。为了澄清我的意思,我通过编辑使用 Inkscape 程序和库spy
生成的图片来准备以下图片:pgfplots
spy
以下是图片中“pgfplots
和”部分的代码:spy
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=newest}
\usepgfplotslibrary{units}
\usetikzlibrary{spy,backgrounds}
\usepackage{pgfplotstable}
\pgfplotstableread{
0.0 1.0
0.0 -0.5
}\datatable
\begin{document}
\begin{tikzpicture} [spy using outlines={rectangle, magnification=2, size=0.5cm, connect spies}]
\begin{axis}[
xlabel={Energy},
ylabel={Intensity},
x unit={eV}
]
\addplot +[mark=none] table [x index=0, y index=1] {\datatable};
\addplot +[mark=none] {0.1*x^2};
\begin{scope}
\spy[black,size=2cm] on (4.25,1.65) in node [fill=none] at (5,5.5);
\end{scope}
\end{axis}
\end{tikzpicture}
\end{document}
我不确定是否可以使用该spy
库来实现这一点。也许需要另一种方法来实现这一点。
答案1
您需要另一种方法来实现效果,因为望远镜永远不会产生自己的pgfplots
轴(它在的左下方操作pgf
)。
一种可能的解决方案是pgfplots
在某个节点(可能是pin
)中创建一个单独的轴,然后相应地重新配置该单独的轴:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=newest}
\usepgfplotslibrary{units}
\usetikzlibrary{spy,backgrounds}
\usepackage{pgfplotstable}
\pgfplotstableread{
0.0 1.0
0.0 -0.5
}\datatable
\begin{document}
\begin{tikzpicture}[every pin/.style={fill=white}]
\begin{axis}[
xlabel={Energy},
ylabel={Intensity},
x unit={eV}
]
\addplot +[mark=none] table [x index=0, y index=1] {\datatable};
\addplot +[mark=none] {0.1*x^2};
\coordinate (pt) at (axis cs:0,0);
\end{axis}
\node[pin=70:{%
\begin{tikzpicture}[baseline,trim axis left,trim axis right]
\begin{axis}[
tiny,
xlabel={Energy},
ylabel={Intensity},
x unit={eV},
xmin=-1,xmax=1,
ymin=-0.2,ymax=0.2,
enlargelimits,
]
\addplot +[mark=none] table [x index=0, y index=1] {\datatable};
\addplot +[mark=none] {0.1*x^2};
\end{axis}
\end{tikzpicture}%
}] at (pt) {};
\end{tikzpicture}
\end{document}
这会在引脚参数内生成一个单独的轴。为了减小边界框(从而减小引脚的目标位置),我选择修剪左侧和右侧的轴。every pin
外部图片的选项为嵌套引脚配置填充颜色。请注意,不支持嵌套轴,这就是我在第一个图pgfplots
之后移动引脚的原因。\end{axis}
如果您的应用程序允许,您还可以调整domain
内轴的参数以提高准确性。
我认为您也可以在“放大”解决方案周围生成一些矩形边框。如果需要精确,则需要使用 手动完成\draw ... rectangle ...;
。可以使用 实现不精确的矩形\node[rectangle,draw=black,text width=...,pin=.....]
。