我想知道如何使用 PSTricks 读取和绘制文本数据文件中的数据,例如
8 98826 year 2008
9 104925 year 2009
10 140153 year 2010
11 178414 year 2011
另外三个问题:
在 PSTricks 中,可以忽略前两列后添加的“2008 年”等注释吗?
是否可以向数据文件添加一般注释和标题,同时仍使 PSTricks 能够读取数据文件?
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}