####?

####?

当创建这样的情节时

\documentclass{article}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[
        scaled y ticks=false,
        yticklabel style={
            /pgf/number format/.cd,
            sci,
            sci generic={mantissa sep=\times,exponent={10^{#1}}}
            }
        ]
        \addplot coordinates {
            (1, 972817.3879)
            (2, 1436186.725)
        };
    \end{axis}
\end{tikzpicture}

\end{document}

我尝试在 y 轴上使用科学计数法作为\times尾数分隔符,而不是默认的\cdot。但是指数没有显示出来。我查看了pgfplots手册中的第 4.12.1 节和第 2.7 节pgfplotstable,并按照那里的示例进行操作,但没有使用这种特殊情况的示例yticklabel

我该如何解决?

您可以在此处查看该图:
在此处输入图片描述

答案1

这似乎有效:

\documentclass{article}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
\pgfkeys{/pgf/number format/.cd,
sci,
sci generic={mantissa sep=\times,exponent={10^{#1}}}}
    \begin{axis}[
        scaled y ticks=false,
        xticklabel style={/pgf/number format/.cd,fixed},
        ]
        \addplot coordinates {
            (1, 972817.3879)
            (2, 1436186.725)
        };
    \end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

####

我们需要更多#!确切地说是四个:####1

代码

\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        scaled y ticks=false,
        yticklabel style={
            /pgf/number format/.cd,
            sci,
            sci generic={mantissa sep=\times,exponent=10^{####1}}
            }
        ]
        \addplot coordinates {
            (1, 972817.3879)
            (2, 1436186.725)
        };
    \end{axis}
\end{tikzpicture}
\end{document}

直接使用\pgfmathprintnumber

您可以直接将样式yticklabel及其内部\tick宏与 一起使用\pgfmathprintnumber。上标是(您已经知道)第一个参数,但随着嵌套的进行,我们需要第二级,因此:##1

\documentclass{article}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[
      scaled y ticks=false,
      yticklabel={
        \pgfmathprintnumber[
          sci,
          sci generic={
            mantissa sep=\times,
            exponent={10^{##1}}
          }
        ]{\tick}
      }
    ]
        \addplot coordinates {
            (1, 972817.3879)
            (2, 1436186.725)
        };
    \end{axis}
\end{tikzpicture}
\end{document}

输出

输出

答案3

您可以在手册中看到该tick scale binop选项的解释。page 233pgplots

尝试以下代码:

\documentclass{article}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[
        scaled y ticks=false,
        yticklabel style={
            /pgf/number format/.cd,
            sci,
            sci generic={mantissa sep=\times,exponent={10^{#1}}} 
            },
        tick scale binop={\textbackslash times} % Change \cdot to \times as mantissa separator
        ]
        \addplot coordinates {
            (1, 972817.3879)
            (2, 1436186.725)
        };
    \end{axis}
\end{tikzpicture}

\end{document}

输出

在此处输入图片描述

编辑

Gonzalo Medina 已经发布了关于缺失指数的解决方法。以防万一这是如果选择不按照你的方式写尾数,则可以选择以下选项:

\documentclass{article}
\usepackage{pgfplots}
\begin{document}

\begin{tikzpicture}
    \begin{axis}[tick scale binop=\times,
        ]
        \addplot coordinates {
            (1, 972817.3879)
            (2, 1436186.725)
        };
    \end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容