当轴线=无时在 pgfplots 中绘制网格

当轴线=无时在 pgfplots 中绘制网格

我希望在 y 轴上有一个网格,尽管没有绘制轴 y 线,可以通过设置axis y line=none或 来hide y axis绘制。在下面的 MWE 中,当我使用所述的额外 y 刻度方法时,不会绘制沿 y=0 的水平线在其中一个答案中。不显示y轴怎么办?

\documentclass{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    extra y ticks       = 0,
    extra y tick style  = { grid = major },
    domain=0:360,
    hide y axis,
    ]
    \addplot {sin(x)};
  \end{axis}
\end{tikzpicture}
\end{document}

答案1

hide y axis完全禁用所有刻度和线条,extra否则。相反,您可以通过设置来停止绘制轴线

separate axis lines,
y axis line style= { draw opacity=0 }

必须separate axis lines能够仅将线型指定给 y 轴,因为通常轴是用单一路径绘制的。请注意,您必须使用draw opacity=0来隐藏 y 轴,通常的方法draw=none在这里不起作用。

\documentclass{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    domain=0:360,
    ytick=0,
    separate axis lines,
    y axis line style= { draw opacity=0 },
    ymajorgrids,
    tick pos = left
    ]
    \addplot {sin(x)};
  \end{axis}
\end{tikzpicture}
\end{document}

如果你想取消刻度标记和刻度标签,最简单的方法可能是使用以下方法之一如何在绘图中添加零线?绘制不使用刻度/网格机制的零线。

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    domain=0:360,
    hide y axis,
    before end axis/.code={
      \draw [/pgfplots/every axis grid] ({rel axis cs:0,0}|-{axis cs:0,0}) -- ({rel axis cs:1,0}|-{axis cs:0,0});
    },
    axis lines*=left
    ]
    \addplot {sin(x)};

  \end{axis}
\end{tikzpicture}
\end{document}

相关内容