如何将 Tikz/PGFPlot 轴刻度显示为文本而不是科学计数法

如何将 Tikz/PGFPlot 轴刻度显示为文本而不是科学计数法

我使用 csv 文件中的数据绘制了一个 pgfplot 条形图。数据中有数亿个数字,并且图表 y 轴自动缩放并以科学计数法显示比例。是否可以将此符号更改为文本?如显示 (百万) 而不是 (10^8)?

\begin{figure}[h]
    \centering
    \pgfplotstableread[col sep=comma,]{data/test.csv}\datatable
    \begin{tikzpicture}
        \color{darkgrey}
        \begin{axis}[
            ybar,
            bar width=.3cm,
            width=\textwidth,
            height=5cm,
            ymin=0,
            xtick=data,
            xticklabels from table={\datatable}{Month},
            x tick label style={font=\normalsize, rotate=45, anchor=east},
            ylabel={Sales}]
            \addplot [fill=red] table [x expr=\coordindex, y={NumSales}]{\datatable};
        \end{axis}
    \end{tikzpicture}
    \caption{Total number of sales per month}
    \label{fig:total_sales}
\end{figure}

输出图

答案1

您可以使用

scaled y ticks=manual:{millions}{\pgfmathparse{#1/10^6}},

这是一个满的可编译的示例。

\documentclass{article}
\begin{filecontents}{test.csv}
Month,NumSales
1,123456789
2,145678923
\end{filecontents}

\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.16}
\definecolor{darkgrey}{RGB}{80,80,80}
\begin{document}
\begin{figure}[h]
    \centering
    \pgfplotstableread[col sep=comma,]{test.csv}\datatable
    \begin{tikzpicture}
        \color{darkgrey}
        \begin{axis}[
            ybar,
            scaled y ticks=manual:{millions}{\pgfmathparse{#1/10^6}},
            bar width=.3cm,
            width=\textwidth,
            height=5cm,
            ymin=0,
            xtick=data,
            xticklabels from table={\datatable}{Month},
            x tick label style={font=\normalsize, rotate=45, anchor=east},
            ylabel={Sales}]
            \addplot [fill=red] table [x expr=\coordindex, y={NumSales}]{\datatable};
        \end{axis}
    \end{tikzpicture}
    \caption{Total number of sales per month}
    \label{fig:total_sales}
\end{figure}
\end{document}

在此处输入图片描述

如您所见,为了给出一个例子,我必须编造一些日期(可能不是您正在使用的日期),定义一种颜色(不是您正在使用的颜色,也许它在某个地方,但我怎么知道),并完成代码(\documentclass等等)。对于未来,我恳请您提供一个完整的示例(另请参阅Zarko 的评论)。

相关内容