pgfplots:设置坐标附近节点的科学数字格式的指数

pgfplots:设置坐标附近节点的科学数字格式的指数

如您所见,我的图当前具有比例因子为 10^6 和 10^5 的节点标签:

在此处输入图片描述

我的目标是为每个节点标签指定 10^6 的比例因子:

在此处输入图片描述

所以我的问题是:如何在科学数字格式中明确设置指数?

\begin{tikzpicture}
\begin{axis}[
    width=6cm,
    xtick=\empty,
    ybar,
    ymin=0,
    ymax=3e6,
    bar width=1cm,
    scaled y ticks=base 10:-6,
    ymajorgrids,
    nodes near coords={\pgfmathprintnumber[sci,precision=1]{\pgfplotspointmeta}}
]
\addplot+[blue] coordinates {(0, 100 000)};
\addplot+[teal] coordinates {(0, 200 000)};
\addplot+[orange] coordinates {(0, 2 500 000)};
\end{axis}
\end{tikzpicture}

答案1

我不确定您是否可以让 PGF 数学解析器执行此操作(可能是一个有用的功能请求),但您可以使用siunitx'\num宏,它有一个fixed-exponent选项:

在此处输入图片描述

\documentclass{report}
\usepackage{tikz} 
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{siunitx}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    width=6cm,
    xtick=\empty,
    ybar,
    ymin=0,
    ymax=3e6,
    bar width=1.4cm,
    scaled y ticks=base 10:-6,
    ymajorgrids,
    nodes near coords={
        \pgfmathfloattofixed{\pgfplotspointmeta} % Convert floating point to fixed point
        \num[
            scientific-notation = fixed,
            fixed-exponent = 6,
            round-mode = places,
            round-precision = 1,
            exponent-product=\cdot
        ]{\pgfmathresult}}
]
\addplot+[blue] coordinates {(0, 100 000)};
\addplot+[teal] coordinates {(0, 200 000)};
\addplot+[orange] coordinates {(0, 2 500 000)};
\end{axis}
\end{tikzpicture}
\end{document}

相关内容