使用 dataplot 创建图表时遇到的问题

使用 dataplot 创建图表时遇到的问题

我有四个简单的数据库:

数据库1

dy,volume
2009,120000
2010,160000
2011,400000
2012,650000
2013,1000000
2014,1500000

数据库

dy,volume
2009,400000
2010,500000
2011,1600000
2012,2200000
2013,2500000
2014,4000000

db3

dy,volume
2009,100000
2010,120000
2011,150000
2012,160000
2013,400000
2014,1000000

db4

dy,volume
2009,250000
2010,400000
2011,750000
2012,900000
2013,1400000
2014,3000000

使用这四个文件,我喜欢创建一个简单的图形表示,例如dataplot。我为此使用了包。这是我的源文件:

测试.tex

\documentclass{book}
\usepackage{dataplot}
\begin{document}
\DTLloaddb{db1}{db1.csv}
\DTLloaddb{db2}{db2.csv}
\DTLloaddb{db3}{db3.csv}
\DTLloaddb{db4}{db4.csv}

\begin{figure}[htbp]
\centering
\DTLplot{db1,db2,db3,db4}{x=dy,y=volume,
width=3in,height=3in,style=lines,legend,legendlabels={Legend1,Legend2,Legend3,Legend4},
xlabel={Year},ylabel={Volume},box,
xticpoints={2009,2010,2011,2012,2013,2014}
}

\caption{A simple graph}

\end{document}

但是,我一遍又一遍地收到这个错误:

Package datatool Error: Can't assign \DTLthisX : there is no key `dy' in database `db1'.

如果有人可以在这方面帮助我,指出我的错误或提供任何有用的信息来处理这个问题。

还有一个问题:

由于我的数据库包含大量数字(即> 100000),我该如何设法在y-axisas100k等上显示它​​。其中k表示kilo。有什么想法吗?

答案1

我不熟悉dataplot,但这里有一个你可以用它做什么的例子pgfplots;我只绘制了前两组数据,但你可以轻松地在现有代码的基础上构建以包含后两组数据。

关于 y 轴上的“巨大数字”,无论您最终使用dataplot还是pgfplots,我强烈建议您将它们乘以 10^{-6} 并在 y 标签中指定该因子;数字会变得更容易阅读(没有人喜欢计算大量的零)。但是,这真的取决于你。

我已经用来filecontents模拟你的.cvs 文件的存在。

在此处输入图片描述

\documentclass{article}
\usepackage{filecontents}
\usepackage{pgfplots}
\pgfplotsset{compat = 1.3}

\begin{document}

\begin{filecontents*}{db1.cvs}
    dy,volume
    2009,120
    2010,160
    2011,400
    2012,650
    2013,1000
    2014,1500
\end{filecontents*}

\begin{filecontents*}{db2.cvs}
    dy,volume
    2009,400
    2010,500
    2011,1600
    2012,2200
    2013,2500
    2014,4000
\end{filecontents*}

\begin{tikzpicture}
    \begin{axis}[%
        width=\textwidth,
        ylabel shift=1ex,
        enlargelimits=0.13,
        tick align=outside,
        legend style={cells={anchor=west},legend pos=north east},
        xtick={2009,2010,...,2014},
        xticklabels={2009,2010,2011,2012,2013,2014},
        ytick={500,1000,...,4000},
        yticklabels={500k,1000k,1500k,2000k,2500k,3000k,3500k,4000k},
        xlabel=\textbf{year},
        ylabel=\textbf{volume}
        ]
        \addplot[mark=none,blue] table [x=dy, y=volume, col sep=comma] {db1.cvs};
        \addlegendentry{db1}
        \addplot[mark=none,red] table [x=dy, y=volume, col sep=comma] {db2.cvs};
         \addlegendentry{db2}   
    \end{axis}
\end{tikzpicture}
\end{document}

相关内容