我\spy
在绘图中使用。这通常有效,但我也希望在放大倍数中使用轴。我附上一张图片来说明。我不想用手动\node
计算并在节点中添加轴。我想让 tikz/pgf 帮我做这个计算。我从中获取表格的文件有 4000 个条目,我必须做很多这样的绘图,所以手动做这个不是一个选择。我想\spy
“了解”它在哪里侦察,然后将其添加为轴。搜索了很多,不确定这是否可行。
平均能量损失
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\usetikzlibrary{spy,backgrounds}
\usepackage{pgfplotstable}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[spy using outlines={rectangle, magnification=6, connect spies}]
\begin{axis}[xlabel={x},ylabel={y}, xmin=0, xmax=8.1216, ymin=2.4, ymax=3.4, grid, width=14.5cm, height=7cm]
\begin{scope}
\spy[rectangle, black, width=4cm, height=2.5cm] on (4.26,4.63) in node [fill=white] at (3,1.87);
\end{scope}
\end{axis}
\end{tikzpicture}
\caption{blabla}
\label{fig:a}
\end{figure}
\end{document}
答案1
在回复评论时,这就是我所说的“绘制两次数据”。我的意思是,无论你如何监视它,迟早你都会需要有人绘制轴和刻度。为此,最直接的方法是调用另一个axis
环境。那么为什么不直接第二次应用你的数据呢?
也许你担心有成千上万的条目,复制所有内容听起来很愚蠢。不幸的是,几乎不可能确定某个条目是否可见。(参见右下角的要点和部分。)我的答案复制所有条目,也是如此\spy
。如果这确实是一个问题,请考虑写一些预处理器或者python
某事。或者gnuplot
。
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\edef\data{}
\foreach\n in{1,...,100}{
\pgfmathsetmacro\x{cos(20*\n)*exp(-\n/20)}
\pgfmathsetmacro\y{sin(20*\n)*exp(-\n/20)}
\xdef\data{\data(\x,\y)}
}
\begin{tikzpicture}
\begin{axis}[xmin=-1.5,xmax=1.5,ymin=-1.5,ymax=1.5,grid,height=12cm,width=12cm,]
\addplot coordinates{\data};
\end{axis}
\begin{axis}[xmin=-.01,xmax=.01,ymin=-.01,ymax=.01,grid,height=4cm,width=4cm,
shift={(7.3cm,1.3cm)},axis background/.style={fill=white}]
\addplot coordinates{\data};
\end{axis}
\end{tikzpicture}
\end{document}