我正在尝试将pgfplots
斜率三角形添加到同一轴上的几个图上,如下所示:
我以为我很幸运能在文档中看到这个过程的部分具体解释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
请注意,pos
key 通过考虑线的总长度来查找点。这里由于图的长度不同,随着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}