在坐标附近的节点中打印逗号而不是句号

在坐标附近的节点中打印逗号而不是句号

我需要打印每个点的 Y 值,并使用逗号作为小数分隔符。请参阅我的 MWE。数据以 .csv 格式提供在我的文件夹中。

\documentclass{standalone}
\usepackage{pgfplots,pgfplotstable}
\usepgfplotslibrary{units}
\usepackage{siunitx}
\sisetup{
    %strict,
    output-decimal-marker={,},
    exponent-product=\cdot,
    detect-all
}

\pgfplotstableread[col sep=tab]{
    X   Y
    0   0.03
    63  0.04
    118 0.09
    188 0.38
    210 0.47
    267 0.89
    327 1.50
    362 1.82
}{\growth}

\begin{document}
\begin{tikzpicture}
        \begin{axis}[
        /pgf/number format/.cd,
        use comma,
        width=\linewidth,
        grid=major,
        grid style={dashed,gray!30},
        xlabel=Zeit,
        ylabel=Optische Dichte,
        x unit=\si{\minute},
        y unit=,
        ymode=log,
%       xtick={0,100,150,200,300},
        x tick label style={rotate=90,anchor=east},
        legend cell align=left,
        legend pos=north west
        ]
        \addplot[
            thick,
            mark=*,
            mark options={fill=red},
            nodes near coords,
            point meta=explicit symbolic,
            every node near coord/.style={anchor=-40},
            color=blue,
            ] table [x=X,y=Y,col sep=tab,meta index=2] {\growth};
        \end{axis}
\end{tikzpicture}
\end{document}

我曾经认为

/pgf/number format/.cd,
use comma,

在 命令中every node near coord/.style,但我无法获得小数分隔符的正确格式。

提前致谢

答案1

您的问题是您列出了point meta=explicit symbolic,这意味着pgfplots将 视为point meta字符串,并且不用于\pgfmathprintnumber打印。您可以改为将选项point meta=explicit(不是explicit symbolic)与 一起使用以/pgf/number format/use comma获得所需的结果。请注意,您需要指定explicit因为 否则,nodes near coords将打印坐标的对数变换值y

请注意,我已修复了您的 MWE 中的一些错误。具体来说,SX 网站不保存制表符,因此您的表格 ( col sep=tab) 的规范不太正确(无论如何,我认为会将任何空格视为列分隔符,因此在数据之间没有空格的情况下,无需pgfplots指定),并且需要为而不是。tabmeta index12

我还将轴改为 asemilogyaxis而不是使用ymode=log,并删除了/pgf/number format/.cd选项第一行中的,以防它导致问题(虽然说实话,我认为它实际上并没有在那里做任何事情)。

\documentclass{standalone}
\usepackage{pgfplots,pgfplotstable}
\pgfplotsset{compat=1.11}
\usepgfplotslibrary{units}
\usepackage{siunitx}
\sisetup{
    %strict,
    output-decimal-marker={,},
    exponent-product=\cdot,
    detect-all
}

\pgfplotstableread{
    X   Y
    0   0.03
    63  0.04
    118 0.09
    188 0.38
    210 0.47
    267 0.89
    327 1.50
    362 1.82
}{\growth}

\begin{document}
\begin{tikzpicture}
        \begin{semilogyaxis}[
        /pgf/number format/use comma,
        width=\linewidth,
        grid=major,
        grid style={dashed,gray!30},
        xlabel=Zeit,
        ylabel=Optische Dichte,
        x unit=\si{\minute},
        y unit=,
%       xtick={0,100,150,200,300},
        x tick label style={rotate=90,anchor=east},
        legend cell align=left,
        legend pos=north west,
        ]
        \addplot[
            thick,
            mark=*,
            mark options={fill=red},
            nodes near coords,
            point meta=explicit,
            every node near coord/.append style={anchor=-40, /pgf/number format/.cd, use comma, fixed, precision=2},
            color=blue,
            ] table [x=X,y=Y,col sep=tab,meta index=1] {\growth};
        \end{semilogyaxis}
\end{tikzpicture}
\end{document}

答案2

完成上述siunitx设置后,您可以使用

nodes near coords={$\num{\pgfplotspointmeta}$},

代码:

\documentclass{standalone}
\usepackage{pgfplots,pgfplotstable}
\usepgfplotslibrary{units}
\usepackage{siunitx}
\sisetup{
    %strict,
    output-decimal-marker={,},
    exponent-product=\cdot,
    detect-all
}

\pgfplotsset{compat=1.11}

\pgfplotstableread[col sep=space]{
    X   Y
    0   0.03
    63  0.04
    118 0.09
    188 0.38
    210 0.47
    267 0.89
    327 1.50
    362 1.82
}{\growth}

\begin{document}
\begin{tikzpicture}
        \begin{axis}[
        /pgf/number format/.cd,
        use comma,
        width=\linewidth,
        grid=major,
        grid style={dashed,gray!30},
        xlabel=Zeit,
        ylabel=Optische Dichte,
        x unit=\si{\minute},
        y unit=,
        ymode=log,
        xtick={0,100,150,200,300},
        x tick label style={rotate=90,anchor=east},
        legend cell align=left,
        legend pos=north west
        ]
        \addplot[
            thick,
            mark=*,
            mark options={fill=red},
            nodes near coords,
            point meta=explicit symbolic,
            nodes near coords={$\num{\pgfplotspointmeta}$},
            every node near coord/.style={anchor=-40},
            color=blue,
            ] table [x=X,y=Y,col sep=space,meta index=1] {\growth};
        \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容