让 PGFplot 对齐绘图之间的 \draw 命令

让 PGFplot 对齐绘图之间的 \draw 命令

我正在尝试将pgfplots斜率三角形添加到同一轴上的几个图上,如下所示:

<code>pdflatex</code> 的当前输出

我以为我很幸运能在文档中看到这个过程的部分具体解释pgfplots,但从输出中可以看出,斜坡三角形的右侧没有对齐。我最初以为这与coordinate [pos=...]使用弧长而不是 x(或 y)距离的命令有关,但我认为这不能解释为什么中间三角形位于最右边。

以下是代码(删除了一些非必需的代码):

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{compat=1.7}       

\begin{document}
\begin{tikzpicture}

\begin{loglogaxis}[%
width=0.962707\textwidth,
height=0.75\textwidth,
xlabel={mesh size, $h^e$},
xmax=0.1,
ylabel={$L_2$ Error}
]
\addplot table[row sep=crcr]{%
0.052   0.08922\\
0.026   0.03718\\
0.013   0.01128\\
0.0065  0.00301\\
0.00325 0.00076\\
}
% add slope triangle
coordinate [pos=0.95] (A)
coordinate [pos=0.75] (B)
;
\draw (A) -| (B)
node [pos=.75,anchor=west]{$2.0$};

\addplot table[row sep=crcr]{%
0.052   0.02903\\
0.026   0.00918\\
0.013   0.00219\\
0.0065  0.00050\\
0.00325 0.00012\\
}
% add slope triangle
coordinate [pos=0.95] (A)
coordinate [pos=0.75] (B)
;
\draw (A) -| (B)
node [pos=.75,anchor=west]{$2.0$};

\end{loglogaxis}
\end{tikzpicture}%
\end{document}

我知道表格的顺序是反向的(从右到左),但改变它似乎没有什么不同。有人能解释一下发生了什么以及如何纠正它吗

此外,如果可以自动计算标记段的斜率值,那将非常有帮助,因为我有几个这样的图,每个图都有独特的数据。

答案1

请注意,poskey 通过考虑线的总长度来查找点。这里由于图的长度不同,随着pos值的增加,点的位置也不同。

您可以使用intersections库,绘制两条垂直线并找到它们与图的交点来绘制斜率。

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\usetikzlibrary{intersections}

\begin{document}
\begin{tikzpicture}

\begin{loglogaxis}[%
width=0.962707\textwidth,
height=0.75\textwidth,
xlabel={mesh size, $h^e$},
xmax=0.1,
ylabel={$L_2$ Error}
]
\path[name path global = vert1] (rel axis cs: 0.12,   0) -- (rel axis cs: 0.12,   1);
\path[name path global = vert2] (rel axis cs: 0.25,   0) -- (rel axis cs: 0.25,   1);
\addplot+[name path global =plot1] table[row sep=crcr]{%
0.052   0.08922\\
0.026   0.03718\\
0.013   0.01128\\
0.0065  0.00301\\
0.00325 0.00076\\
};
% add slope triangle
\path [name intersections={of = vert1 and plot1, by=a}];
\path [name intersections={of = vert2 and plot1, by=b}];

\draw (a) -| (b)node [pos=.75,anchor=west]{$2.0$};

\addplot+[name path global=plot2] table[row sep=crcr]{%
0.052   0.02903\\
0.026   0.00918\\
0.013   0.00219\\
0.0065  0.00050\\
0.00325 0.00012\\
};
% add slope triangle
\path [name intersections={of = vert1 and plot2, by=a}];
\path [name intersections={of = vert2 and plot2, by=b}];
\draw (a) -| (b)
node [pos=.75,anchor=west]{$2.0$};

\end{loglogaxis}
\end{tikzpicture}%
\end{document}

在此处输入图片描述

相关内容