透過 y 標籤將 pgfplots 與基線垂直對齊

透過 y 標籤將 pgfplots 與基線垂直對齊

我想pgfplots透過各自的 y 軸標籤垂直對齊一些產生的圖。因為我想要一些文字(或數學符號),所以我嘗試使用 TikZ 選項baseline=(node.position),但不知何故,我無法存取該ylabel節點。這是一個模型範例,其中的繪圖取自pgfplots 畫廊:

\documentclass{standalone}
\usepackage{pgfplots,tikz}
\begin{document}
\begin{tikzpicture}[baseline=(ylabel.center)]
  \begin{axis}[
      height=5cm,
      xlabel=Cost,
      ylabel=Error]
    \addplot[color=red,mark=x] coordinates {
      (2,-2.8559703)
      (3,-3.5301677)
      (4,-4.3050655)
      (5,-5.1413136)
      (6,-6.0322865)
      (7,-6.9675052)
      (8,-7.9377747)
    };
  \end{axis}
\end{tikzpicture}
$\Rightarrow$
\begin{tikzpicture}[baseline=(ylabel.center)]
  \begin{axis}[
      height=4cm,
      xmin=-3,   xmax=3,
      ymin=-3,   ymax=3,
      extra x ticks={-1,1},
      extra y ticks={-2,2},
      extra tick style={grid=major},
      xlabel=x,
      ylabel=y,
    ]
    \draw[red] \pgfextra{
      \pgfpathellipse{\pgfplotspointaxisxy{0}{0}}
             {\pgfplotspointaxisdirectionxy{1}{0}}
             {\pgfplotspointaxisdirectionxy{0}{2}}
    };
    \draw[blue] \pgfextra{
      \pgfpathellipse{\pgfplotspointaxisxy{0}{0}}
             {\pgfplotspointaxisdirectionxy{1}{1}}
             {\pgfplotspointaxisdirectionxy{0}{2}}
    };
    \addplot [only marks,mark=*] coordinates { (0,0) };
  \end{axis}
\end{tikzpicture}
\end{document}

我究竟做錯了什麼?

答案1

預設情況下,ylabel 沒有指定名稱,但您可以透過在選項中ylabel新增該名稱。ylabel style={name=ylabel}axis

或者,您可以說不[baseline=(current axis.east)]添加ylabel style,這會給出相同的輸出(至少在這種情況下)。

在此輸入影像描述

\documentclass{standalone}
\usepackage{pgfplots,tikz}
\begin{document}
\begin{tikzpicture}[baseline=(ylabel.center)]
  \begin{axis}[
      height=5cm,
      xlabel=Cost,
      ylabel=Error,
      ylabel style={name=ylabel}]
    \addplot[color=red,mark=x] coordinates {
      (2,-2.8559703)
      (3,-3.5301677)
      (4,-4.3050655)
      (5,-5.1413136)
      (6,-6.0322865)
      (7,-6.9675052)
      (8,-7.9377747)
    };
  \end{axis}
\end{tikzpicture}
$\Rightarrow$
\begin{tikzpicture}[baseline=(ylabel.center)]
  \begin{axis}[
      height=4cm,
      xmin=-3,   xmax=3,
      ymin=-3,   ymax=3,
      extra x ticks={-1,1},
      extra y ticks={-2,2},
      extra tick style={grid=major},
      xlabel=x,
      ylabel=y,
      ylabel style={name=ylabel}
    ]
    \draw[red] \pgfextra{
      \pgfpathellipse{\pgfplotspointaxisxy{0}{0}}
             {\pgfplotspointaxisdirectionxy{1}{0}}
             {\pgfplotspointaxisdirectionxy{0}{2}}
    };
    \draw[blue] \pgfextra{
      \pgfpathellipse{\pgfplotspointaxisxy{0}{0}}
             {\pgfplotspointaxisdirectionxy{1}{1}}
             {\pgfplotspointaxisdirectionxy{0}{2}}
    };
    \addplot [only marks,mark=*] coordinates { (0,0) };
  \end{axis}
\end{tikzpicture}
\end{document}

相關內容