在 \spy 图中使用原始图的轴

在 \spy 图中使用原始图的轴

\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}

相关内容