I would like to know how to use PSTricks to read and plot data from a text data file e.g.

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

And three further questions:

  1. Can comments like "year 2008" added after the two first columns be ignored in PSTricks?

  2. And is it possible to add a general comment and headings to the data file while still make it possible for PSTricks to read the data file?

  3. Is PSTricks suitable to plot large amount of data? I do not know how large is large but say more than 100 points. I typically use Matlab for my plots but I am considering other options that are closer to LaTeX.

  • Would a PGFplots solution be interesting as well? Nov 23, 2011 at 9:21
  • I see from the PGFplot manual that this pacakge has much to offer. Does it work with TeXLive also? Yes you are welcome to provide a PGFplot solution here but I cannot guarantee that I will accept your solution if others will come up with PStricks-based solutions here. Nov 23, 2011 at 9:28
  • It's a standard part of TeXLive now. Check out my recent answer with an introduction to pgfplots, including how to use a file.
    – qubyte
    Nov 23, 2011 at 9:45
  • 1
    You may need to index by column number if there are no column headers. Do this like \addplot table[x index=0,y index=1] {datafile.dat};
    – qubyte
    Nov 23, 2011 at 9:53
  • 1
    Look at this page of the PSTricks website. They mention an example with 1000 data records. The documentation for pst-plots and pst-add will help. You can find it on CTAN.
    – DJP
    Nov 24, 2011 at 2:32

2 Answers 2


Since nobody has attempted a solution I'll mention: 1. According to the PST-plot documentation (page 6), comments can be added after the first 2 columns but you'll need to put a percent sign before it. 2. Headers can be added; to ignore them you use the ignoreLines command (page 58) so if your header is 20 lines, then ignoreLines=20 is used. Finally, the PSTrick page I commented on above and the documentation from PST-plot (page 59-60) mentions an example with 1000 data records. Since you indicate you are using page 6 of the documentation says the \dataplot command is for lists of data created by other programs. Maybe you don't need to consider other options. I haven't used this package much; I played around and got this (light comments included):

\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}

The data file (ExData) has this as its contents:

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

Output above enter image description here


The number of data records is not limited ...


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

\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,


enter image description here

  • Where is the \pstVerb command documented? There's no mention of it in the pst-plot documentation.
    – Alan Munn
    Nov 25, 2011 at 18:21
  • I chose DJP's answer as it gives the input from an external file as required by the question but otherwise your two codes are pretty much alike and helpful. 1 vote up. Nov 28, 2011 at 7:00
  • 1
    @yCalleecharan: All data is read from an external file ...
    – user2478
    Nov 28, 2011 at 7:17
  • @ Herbert. Yes now I can see that you have defined your data before \begin{document} and that you are reading from a file. Nov 28, 2011 at 11:02

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .