\useplot 使用 CSV 格式的文本

\useplot 使用 CSV 格式的文本

有没有办法导入并自动绘制一列包含文本的图表?

例如这是我的桌子

Period,Unit Sales (in thousands)
Q1 '07,24943
Q2 '07,27855
Q3 '07,32752
Q4 '07,36766

编辑:

这是我尝试过的:

\begin{tikzpicture}
\begin{axis}[
xlabel = Period,
ylabel = Unit Sales (thousands)]
\addplot table [col sep=comma]{data.csv};
\end{axis}
\end{tikzpicture}

答案1

这实际上比看起来要复杂一些:您需要将符号输入转换为数字,然后再转换回来才能进行绘图。例如,以下方法似乎有效:

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.csv}
Period,Unit Sales (in thousands)
Q1 '07,24943
Q2 '07,27855
Q3 '07,32752
Q4 '07,36766
\end{filecontents*}
\usepackage{pgfplots}
\newcommand*{\parseperiod}{}
\def\parseperiod Q#1 '#2\relax{\def\pgfmathresult{0.20#2#1}}
\newcommand*{\parseinvperiod}{}
\def\parseinvperiod #1.#2#3#4#5#6#7\relax{\def\pgfmathresult{Q#6 '#4#5}}
\begin{document}

\begin{tikzpicture}
  \begin{axis}[
    ybar,
    x coord trafo/.code = {\expandafter\parseperiod#1\relax},
    x coord inv trafo/.code = {\parseinvperiod#1\relax},
    xticklabel = {\tick},
    xtick = data,
    xlabel = Period,
    ylabel = Unit Sales (thousands)]
    \addplot table [col sep=comma]{\jobname.csv};
  \end{axis}
\end{tikzpicture}

\end{document}

这里的想法是解析水平标签并使用低级x coord trafo键将它们转换为数字。我通过抓取季度和年份,并将它们转换为数字(显示)来实现这一点0.20<year><quarter>。要实际打印标签,您必须使用将其重新转换为文本x coord inv trafo。还有一点技巧,只使用X-轴标签为数据本身(xtick = data)并避免在该点解析任何标签(xticklabel = {\tick})。

相关内容