pgfplots:如何以正确的方式将所有节点图注释置于顶部?

pgfplots:如何以正确的方式将所有节点图注释置于顶部?

我正在绘制许多几乎平行的线(在 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}

相关内容