使用 PSTricks 从数据文件绘图

使用 PSTricks 从数据文件绘图

我想知道如何使用 PSTricks 读取和绘制文本数据文件中的数据,例如

8   98826   year 2008
9   104925  year 2009
10  140153  year 2010
11  178414  year 2011 

另外三个问题:

  1. 在 PSTricks 中,可以忽略前两列后添加的“2008 年”等注释吗?

  2. 是否可以向数据文件添加一般注释和标题,同时仍使 PSTricks 能够读取数据文件?

  3. PSTricks 适合绘制大量数据吗?我不知道多大才算大,但可以假设超过 100 个点。我通常使用 Matlab 来绘制图表,但我正在考虑更接近 LaTeX 的其他选项。

答案1

因为没人尝试过解决方案,所以我会提到:1. 根据 PST-plot 文档(第 6 页),可以在前 2 列后添加注释,但您需要在它前面加上百分号。2. 可以添加标题;要忽略它们,您可以使用命令ignoreLines(第 58 页),因此如果您的标题有 20 行,则ignoreLines=20使用。最后,我上面评论过的 PSTrick 页面和 PST-plot 文档(第 59-60 页)提到了一个包含 1000 条数据记录的示例。由于您表示您正在使用文档的第 6 页,该\dataplot命令用于其他程序创建的数据列表。也许您不需要考虑其他选择。我没有太多使用过这个包;我玩了一下并得到了这个(包括少量注释):

\documentclass[11pt]{article}
\usepackage{pstricks,pst-plot}
\pagestyle{empty}
\begin{document}
\readdata[ignoreLines=1]{\mydata}{ExData} %ignores 1 line
\psset{xAxisLabel=My x-Axis,yAxisLabel=My y-Axis, xAxisLabelPos={c,-3},yAxisLabelPos={-2,c}}
% the position of your axes labels can be adjusted by changing, for example xAxisLabelPos={c,-2}
\pstScalePoints(1,.00001){}{} %the y values have been multiplied by 1/10^5  so they'll show
\begin{psgraph}[axesstyle=frame,Dy=1,ylabelFactor=\cdot 10^5,Dx=1,ticksize=5pt 0](1,0)(11,7){10cm}{8cm}%the labels have been adjusted to reflect the 1/10^5
%the (1,0) starts the first record on the y-axis 
\listplot[linecolor=red, linewidth=1pt,showpoints=true]{\mydata}
\end{psgraph}
\end{document}

数据文件(ExData)的内容如下:

A useless header
1   234611  %year 2000
2   645511  %year 2001
3  345311  
4  235411 
5   342526  
6   134525 
7  145153  
8   98826   
9   104925 
10  140153  
11  178414

上面的输出在此处输入图片描述

答案2

数据记录的数量不受限制...

\listfiles
\documentclass{article}
\usepackage{pst-plot,filecontents}

\begin{filecontents*}{test.data}
8   98826   year 2008
9   104925  year 2009
10  140153  year 2010
11  178414  year 2011 
\end{filecontents*}

\begin{document}
\readdata{\mydata}{test.data}
\pstVerb{/year {} def }
\pstScalePoints(1,1){}{1.e4 div}

\psset{xAxisLabel=My x-Axis,yAxisLabel=My y-Axis, xAxisLabelPos={c,-1.5},yAxisLabelPos={-0.5,c}}
\begin{psgraph}[axesstyle=frame,Dy=2,Oy=8,Ox=8,ylabelFactor=\cdot 10^4,ticksize=5pt 0](8,8)(11,20){10cm}{8cm}
\listplot[linecolor=red, linewidth=2pt,showpoints,dotstyle=square,
  plotNoMax=2,plotNo=1]{\mydata}
\end{psgraph}

\end{document}

在此处输入图片描述

相关内容