我使用 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 的评论)。