在 PGFPLOTS polarplot 中设置图层无法按预期工作

在 PGFPLOTS polarplot 中设置图层无法按预期工作

我有以下代码:

\begin{tikzpicture}[]
\begin{polaraxis}[xtick={0,90,180,270}, ytick={0,1}, ymax=1.5, xticklabel={\pgfmathprintnumber{\tick}\si{\degree}}, set layers=default]
\addplot[thick,fill=gray,draw=none,opacity=0.5,  domain=0:360,
samples=360,]{1};
\addplot+[thick, mark=none, >->] table[col sep=comma,x=ang,y=abs] {images/tikz/stability/stable.csv};
\addplot+[thick, mark=none, >->, orange] table[col sep=comma,x=ang,y=abs] {images/tikz/stability/instable.csv};
\end{polaraxis}
\end{tikzpicture}

它绘制了一些极坐标图。对于第一个图,我尝试填充单位圆的内部。但是,我没有成功。我希望圆位于轴的后面。为此,我尝试了设置图层在轴环境的选项中。

我遇到的第一个问题是:根据文档,set layer=defautl 和 set layer 应该具有相同的效果,但实际上并非如此。使用 set layer(没有默认值)时,轴会消失。使用默认值时,轴会保留。

使用钥匙在层=轴背景上我尝试将第一个图移到轴后面,如下所述这里

这不起作用,因为层未知。然后我尝试设置层=标准。这样设置的话,图层名称是知道的,但是轴又消失了。

有人能告诉我如何在极轴后面绘制图表吗?

谢谢

编辑:

我创建了一个包含三种代码的最小(不)工作示例。前两个图像应该产生相同的输出,但实际上并非如此。最后一个图像什么也不做。

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepackage{pgfplotstable}
\usepgfplotslibrary{polar}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[]
\begin{polaraxis}[xtick={0,90,180,270}, ytick={0,1}, ymax=1.5, set 
layers=default]
\addplot[thick,fill=gray,draw=none,opacity=0.5,  domain=0:360,
samples=360,]{1};
\end{polaraxis}
\end{tikzpicture}

\begin{tikzpicture}[]
\begin{polaraxis}[xtick={0,90,180,270}, ytick={0,1}, ymax=1.5, set 
layers]
\addplot[thick,fill=gray,draw=none,opacity=0.5,  domain=0:360,
samples=360,]{1};
\end{polaraxis}
\end{tikzpicture}

\begin{tikzpicture}[]
\begin{polaraxis}[xtick={0,90,180,270}, ytick={0,1}, ymax=1.5, set 
layers=standard]
\addplot[thick,fill=gray,draw=none,opacity=0.5,  domain=0:360,
samples=360, on layer=axis background]{1};
\end{polaraxis}
\end{tikzpicture}
\end{document}

答案1

现在我可以确认您的观察结果:极坐标图上的图层无法按预期工作。作为一种解决方法,可以在轴图层上手动绘制网格。

\documentclass[tikz,3.14mm]{standalone}
\usepackage{siunitx}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.16}
\usepgfplotslibrary{polar} 
\begin{document}
\begin{tikzpicture}
\begin{polaraxis}[xtick={0,90,180,270}, ytick={0,1}, ymax=1.5,
xticklabel={\pgfmathprintnumber{\tick}\si{\degree}},
 axis on top,grid style={draw=none}]
\addplot[thick,fill=red,draw=none,opacity=0.5,  domain=0:360,
samples=360,]{1};
% draw grid by hand
\begin{scope}[on layer=axis lines,thin,gray]
\draw(180,2) -- (0,2) (90,2) -- (270,2) (0,0);
\addplot[domain=0:360,samples=60,smooth]{1};
\end{scope}

\begin{scope}[on layer=axis foreground]
\addplot[thick,domain=0:360] {sin(x)};
\end{scope}
% \addplot+[thick, mark=none, >->] table[col sep=comma,x=ang,y=abs] {images/tikz/stability/stable.csv};
% \addplot+[thick, mark=none, >->, orange] table[col sep=comma,x=ang,y=abs] {images/tikz/stability/instable.csv};
\end{polaraxis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

如您所见,实心圆位于背景上,即网格后面,但绘图位于前景上。

相关内容