pgfplots 极坐标图中的对数 Y 轴

pgfplots 极坐标图中的对数 Y 轴

我尝试通过指定以下方式在 pgfplots 极坐标图中使用对数 Y 轴ymode=log

\documentclass[]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}
\pgfplotsset{compat=1.12}

\begin{document}
\begin{tikzpicture}
    \begin{polaraxis}[
        ymode=log, ymin=0, ymax=70,
        ytick=\empty, axis y line=none, 
        xticklabel=$\pgfmathprintnumber{\tick}^\circ$,
        nodes near coords style={font=\footnotesize},
        nodes near coords=\pgfmathprintnumber{\pgfplotspointmeta}\%,
        visualization depends on={x\as\myx},
        nodes near coords style={anchor=\myx-180},
    ]
    \addplot+ [polar comb, green, line width=3pt, mark=none, ->]
    coordinates {(0,21.6) (180,15.8)};
    \addplot+ [polar comb, red, line width=3pt, mark=none, ->]
    coordinates {(90,11.4) (270,10.6)};
    \addplot+ [mark=none, ->, polar comb, blue, line width=3pt]
    coordinates {(30,5.3) (60,5.5) (120,4.0) (150,6.6) (210,5.2) (240,5.5) (300,3.4) (330,5.2)};
    \end{polaraxis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

问题:

  1. 标签(坐标附近的节点)也显示为对数值。我只想要 y 轴的对数刻度,保持显示的 y 值不变。
  2. 许多与浮点相关的错误(见下页)::PGF 软件包数学错误:抱歉,浮点单元的内部例程得到一个格式错误的浮点数“2.75998000000000”。不可读部分位于“2.75998000000000”附近。

答案1

我相信您可以充分利用point metay coord trafoy coord inv trafo键。

y coord trafoy coord inv trafo可以对原始坐标应用变换y,以修改实际绘图坐标和相关刻度标签。这将在pgfplots手动的4.21 节符号坐标和用户变换。

基本上发生的事情是

  • y coord trafo/.code = {<expression>}获取输入y坐标并<expression>使用它们进行解析;
  • y coord inv trafo/.code = {<inv expression>}采用前一次解析的结果并进行解析 <inv expression>
  • point meta = <setting>pgfplotspointmeta根据 的值设置 的值<setting>。由于您对值感兴趣y,因此您可以选择<setting>=y,但由于y坐标已解析,这实际上会导致错误的输出,因此您可以选择rawy与实际未处理的y值相对应的值。

以下是代码

\documentclass[]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}
\pgfplotsset{compat=1.12}

\begin{document}
\begin{tikzpicture}
    \begin{polaraxis}[
        ymin=1, ymax=70,
        xticklabel=$\pgfmathprintnumber{\tick}^\circ$,
        point meta ={rawy},
        y coord trafo/.code =\pgfmathparse{log10(#1)},
        y coord inv trafo/.code=\pgfmathparse{10^#1},
        nodes near coords style={font=\footnotesize},
        nodes near coords=\pgfmathprintnumber\pgfplotspointmeta\%,
        visualization depends on={x\as\myx},
        nodes near coords style={anchor=\myx-180},
    ]
    \addplot+ [polar comb, green, line width=3pt, mark=none, ->]
    coordinates {(0,21.6) (180,15.8)};
    \addplot+ [polar comb, red, line width=3pt, mark=none, ->]
    coordinates {(90,11.4) (270,10.6)};
    \addplot+ [mark=none, ->, polar comb, blue, line width=3pt]
    coordinates {(30,5.3) (60,5.5) (120,4.0) (150,6.6) (210,5.2) (240,5.5) (300,3.4) (330,5.2)};
    \end{polaraxis}
\end{tikzpicture}
\end{document}

还有输出。我刚刚删除了隐藏 y 轴的设置,以便您看到刻度标签上的效果。

在此处输入图片描述

相关内容