我正在绘制许多几乎平行的线(在 MWE 中我只是绘制随机的东西),其中我使用非常方便的node[pos=0.x]{label}
选项来注释我的图表。
问题是,多条线彼此非常接近,以至于后面的绘图曲线会遮挡我的标签(虽然只是轻微的遮挡,但仍然很丑陋)。因此,我正在寻找一种在绘制曲线后绘制所有节点的选项。我不太清楚如何做到这一点,除了先绘制图形,然后绘制幻影曲线(opacity=0
顶部将包含注释节点)。
如何正确地做到这一点?
PS 在 MWE 中,一个简单的解决方案是移动注释。在我的实际情况下,许多线几乎平行,所以这不是一个解决方案。
“正常”输出(请注意丑陋的“x”):
所需输出(此处通过“两次”绘制图表完成):
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage[]{amsmath,amssymb}
\usepgfplotslibrary{colorbrewer}
\pgfplotsset{
compat=newest,
cycle list/Set1,
width=6cm,
height=6cm
}
\begin{document}
\begin{tikzpicture}[myannotation/.style={font=\tiny,fill=white,rounded corners=2pt,fill opacity=1,inner sep=1pt,outer sep=0pt}]
\begin{axis}[thick,smooth]
\addplot+[] {x^3}node[myannotation,pos=0.3]{$x^3$};
\addplot+[] {x}node[myannotation,pos=0.35]{$x$};
\addplot+[] {x^2}node[myannotation,pos=0.3]{$x^2$};
%uncomment following lines for desired version.
\pgfplotsset{cycle list shift=-3};
\addplot+[opacity=0] {x^3}node[myannotation,pos=0.3]{$x^3$};
\addplot+[opacity=0] {x}node[myannotation,pos=0.35]{$x$};
\addplot+[opacity=0] {x^2}node[myannotation,pos=0.3]{$x^2$};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
这是一个解决方案。事实上,将注释移出轴环境通常更好。
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage[]{amsmath,amssymb}
\usepgfplotslibrary{colorbrewer}
\pgfplotsset{
compat=newest,
cycle list/Set1,
width=6cm,
height=6cm
}
\begin{document}
\begin{tikzpicture}[myannotation/.style={font=\tiny,fill=white,rounded corners=2pt,fill opacity=1,inner sep=1pt,outer sep=0pt}]
\begin{axis}[thick,smooth]
\addplot+[] {x*x*x} coordinate[pos=0.3] (A);
\addplot+[] {x} coordinate[pos=0.35] (B);
\addplot+[] {x*x} coordinate[pos=0.3] (C);
\end{axis}
\node[myannotation,text=Set1-A] at (A) {$x^3$};
\node[myannotation,text=Set1-B] at (B) {$x$};
\node[myannotation,text=Set1-C] at (C) {$x^2$};
%\foreach \c/\d in{A/$x^3$, B/$x$, C/$x^2$} {\node[myannotation,text={Set1-\c}] at(\c) {\d};}
\end{tikzpicture}
\end{document}