pgfplots:当包含逗号和美元符号时,“额外 y 刻度标签”出现意外行为

pgfplots:当包含逗号和美元符号时,“额外 y 刻度标签”出现意外行为
  • 我想补充一下extra y ticks
  • 我还想extra tick labels通过使用来手动定义extra y tick labels
  • 对于正常情况yticklabels我可以使用yticklabels = {{$25,0$},{$30,0$}}
  • 当我对使用相同的语法时,extra y tick labels出现错误:! Extra }, or forgotten $.
  • 如果我不使用美元符号($例如extra y tick labels = {{27,0}}),就不会发生这种情况。
  • 在我的实际用例中,我需要美元符号。
  • 不重要:在我的国家(德国)小数分隔符是个逗号

\documentclass[tikz]{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\pgfplotsset{myDefaultStyle/.style = 
    {
    width = 160mm,
    height = 90mm,
    axis x line = bottom,
    axis y line = left,
    ylabel = y Label,
    xlabel = x Label,   
    grid = major,
    }}

\begin{document}


% ######### Plot #########
% ########################
\begin{tikzpicture}
    \begin{axis}[
        myDefaultStyle,
        xmin = 0,
        xmax = 32,
        ymin = 24.5,
        ymax = 30.1,        
        xtick = {0,10,20,30},  
        %% Works Fine 
        ytick = {25,30},     
        yticklabels = {{$25,0$},{$30,0$}},
        %% Does not Work Fine 
%        extra y ticks={27},
%        extra y tick labels = {{$27,0$}},
    ]
    % Plots     
    \addplot[domain=0:10,red]{x}; 
    %
    \end{axis}
\end{tikzpicture}

\end{document}

答案1

大括号必须位于内联数学内。因此,您可以使用

extra y tick labels = {${27,0}$}

或者

extra y tick labels = {$27{,}0$}

我更喜欢第二个,因为逗号后的(不需要的)空格也被删除了。

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\pgfplotsset{myDefaultStyle/.style = 
    {
    width = 160mm,
    height = 90mm,
    axis x line = bottom,
    axis y line = left,
    ylabel = y Label,
    xlabel = x Label,
    grid = major,
    }}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        myDefaultStyle,
        xmin = 0,
        xmax = 32,
        ymin = 24.5,
        ymax = 30.1,
        xtick = {0,10,20,30},  
        %% Works Fine 
        ytick = {25,30},
        yticklabels = {$25{,}0$,$30{,}0$},
        %% Works too
        extra y ticks={27},
        extra y tick labels = {$27{,}0$},
    ]
    % Plots     
    \addplot[domain=0:10,red]{x}; 
    %
    \end{axis}
\end{tikzpicture}
\end{document}

结果是

在此处输入图片描述


我不知道你真正想做什么。但也许使用\pgfmathprintnumber也可能是一种选择:

yticklabel={\pgfmathprintnumber[fixed,fixed zerofill,precision=1,use comma]{\tick}}

例子:

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\pgfplotsset{myDefaultStyle/.style = 
    {
    width = 160mm,
    height = 90mm,
    axis x line = bottom,
    axis y line = left,
    ylabel = y Label,
    xlabel = x Label,
    grid = major,
    }}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        myDefaultStyle,
        xmin = 0,
        xmax = 32,
        ymin = 24.5,
        ymax = 30.1,
        xtick = {0,10,20,30},
        yticklabel={\pgfmathprintnumber[fixed,fixed zerofill,precision=1,use comma]{\tick}},
        ytick = {25,30},
        extra y ticks={27}
    ]
    % Plots     
    \addplot[domain=0:10,red]{x}; 
    %
    \end{axis}
\end{tikzpicture}
\end{document}

结果和上面一样。

相关内容