8

Consider the following example:

\documentclass{article}

\usepackage{pst-3dplot}

\begin{filecontents*}{plotting-of-3d-surface.data}
2.17    0.001   0.82044815
2.17    0.002   0.82345825
2.17    0.004   0.82679255
2.17    0.008   0.83334715
2.17    0.016   0.84395915
2.17    0.032   0.8584953
2.21    0.001   0.77582165
2.21    0.003   0.78520505
2.21    0.009   0.80205985
2.21    0.027   0.83085105
2.24    0.001   0.7227885
2.24    0.002   0.73391615
2.24    0.005   0.7543979
2.24    0.015   0.78798745
2.24    0.003   0.74176635
2.24    0.009   0.77064805
2.24    0.027   0.81042375
2.26    0.001   0.66545585
2.26    0.003   0.7012046
2.26    0.005   0.721067
2.26    0.009   0.7447984
2.26    0.015   0.76715245
2.26    0.027   0.794177
2.27    0.001   0.62916195
2.27    0.003   0.6774642
2.27    0.009   0.72961785
2.27    0.027   0.7861086
2.28    0.001   0.5750828
2.28    0.003   0.65059675
2.28    0.005   0.6802631
2.28    0.009   0.7145367
2.28    0.015   0.74447695
2.28    0.027   0.7774403
2.29    0.001   0.51357255
2.29    0.002   0.581053
2.29    0.003   0.6173075
2.29    0.009   0.6972096
2.29    0.027   0.76793225
2.31    0.001   0.36997965
2.31    0.002   0.474415
2.31    0.003   0.53649295
2.31    0.009   0.6587164
2.31    0.016   0.70870255
2.31    0.027   0.7482423
2.31    0.05    0.7912395
2.34    0.001   0.2204104
2.34    0.002   0.316308
2.34    0.003   0.39256745
2.34    0.004   0.45240835
2.34    0.009   0.5883453
2.34    0.016   0.6590771
2.34    0.027   0.71444205
2.34    0.05    0.7690014
2.38    0.001   0.13286995
2.38    0.002   0.1828288
2.38    0.004   0.2980268
2.38    0.008   0.4507145
2.38    0.016   0.58417075
2.38    0.032   0.6833616
\end{filecontents*}

\begin{document}

\begin{figure}
\centering
\readdata{\data}{plotting-of-3d-surface.data}
 \begin{pspicture}
  \pstThreeDCoor[xMin=2.1,xMax=2.4,yMin=0,yMax=0.1,zMin=0,zMax=1]
  \fileplotThreeD{\data}
 \end{pspicture}
\end{figure}

\end{document}

When I try to compile the file above from a terminal with latex, I get the following output:

This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012)
 restricted \write18 enabled.
entering extended mode
(./test.tex
LaTeX2e <2011/06/27>
Babel <v3.8m> and hyphenation patterns for english, dumylang, nohyphenation, ge
rman-x-2012-05-30, ngerman-x-2012-05-30, afrikaans, ancientgreek, ibycus, arabi
c, armenian, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danis
h, dutch, ukenglish, usenglishmax, esperanto, estonian, ethiopic, farsi, finnis
h, french, friulan, galician, german, ngerman, swissgerman, monogreek, greek, h
ungarian, icelandic, assamese, bengali, gujarati, hindi, kannada, malayalam, ma
rathi, oriya, panjabi, tamil, telugu, indonesian, interlingua, irish, italian, 
kurmanji, latin, latvian, lithuanian, mongolian, mongolianlmc, bokmal, nynorsk,
 piedmontese, polish, portuguese, romanian, romansh, russian, sanskrit, serbian
, serbianc, slovak, slovenian, spanish, swedish, turkish, turkmen, ukrainian, u
ppersorbian, welsh, loaded.
(/usr/local/texlive/2012/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2012/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2012/texmf-dist/tex/latex/pst-3dplot/pst-3dplot.sty
(/usr/local/texlive/2012/texmf-dist/tex/latex/pstricks/pstricks.sty
(/usr/local/texlive/2012/texmf-dist/tex/generic/pstricks/pstricks.tex
(/usr/local/texlive/2012/texmf-dist/tex/generic/xkeyval/pst-xkey.tex
(/usr/local/texlive/2012/texmf-dist/tex/latex/xkeyval/xkeyval.sty
(/usr/local/texlive/2012/texmf-dist/tex/generic/xkeyval/xkeyval.tex
(/usr/local/texlive/2012/texmf-dist/tex/generic/xkeyval/keyval.tex))))
(/usr/local/texlive/2012/texmf-dist/tex/generic/pstricks/pst-fp.tex
`pst-fp' v0.05, 2010/01/17 (hv))
(/usr/local/texlive/2012/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.te
x)
(/usr/local/texlive/2012/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
(/usr/local/texlive/2012/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.c
ode.tex))
(/usr/local/texlive/2012/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex)
`PSTricks' v2.40  <2013/04/05> (tvz)
(/usr/local/texlive/2012/texmf-dist/tex/generic/pstricks/pstricks.con))
(/usr/local/texlive/2012/texmf-dist/tex/generic/pstricks/pst-fp.tex)
(/usr/local/texlive/2012/texmf-dist/tex/latex/xcolor/xcolor.sty
(/usr/local/texlive/2012/texmf-dist/tex/latex/latexconfig/color.cfg)
(/usr/local/texlive/2012/texmf-dist/tex/latex/graphics/dvips.def)))
(/usr/local/texlive/2012/texmf-dist/tex/latex/pst-3d/pst-3d.sty
(/usr/local/texlive/2012/texmf-dist/tex/generic/pst-3d/pst-3d.tex
`PST-3d' v1.11, 2010/02/14 (tvz)))
(/usr/local/texlive/2012/texmf-dist/tex/latex/pst-plot/pst-plot.sty
(/usr/local/texlive/2012/texmf-dist/tex/latex/xkeyval/pst-xkey.sty)
(/usr/local/texlive/2012/texmf-dist/tex/latex/multido/multido.sty
(/usr/local/texlive/2012/texmf-dist/tex/generic/multido/multido.tex
 v1.42, 2010/05/14 <tvz>))
(/usr/local/texlive/2012/texmf-dist/tex/generic/pst-plot/pst-plot.tex
 v1.44, 2013/01/03 (tvz,hv)))
(/usr/local/texlive/2012/texmf-dist/tex/latex/pst-node/pst-node.sty
(/usr/local/texlive/2012/texmf-dist/tex/generic/pst-node/pst-node.tex
 v1.25, 2012/09/21))
(/usr/local/texlive/2012/texmf-dist/tex/generic/pst-3dplot/pst-3dplot.tex
(/usr/local/texlive/2012/texmf-dist/tex/generic/pst-node/pst-node.tex)
(/usr/local/texlive/2012/texmf-dist/tex/generic/multido/multido.tex
 v1.42, 2010/05/14 <tvz>) `PST-3dplot' v1.97, 2012/06/07 (HV,DL)))

LaTeX Warning: File `plotting-of-3d-surface.data' already exists on the system.
               Not generating it from this source.

No file test.aux.
PSTricks error.  See User's Guide for further information.
                 Type  H <return>  for immediate help.
! Data file ` D 2.17 D 0.001 D 0.82044815 D 2.17 D 0.002 D 0.82345825 D 2.17 D 
0.004 D 0.82679255 D 2.17 D 0.008 D 0.83334715 D 2.17 D 0.016 D 0.84395915 D 2.
17 D 0.032 D 0.8584953 D 2.21 D 0.001 D 0.77582165 D 2.21 D 0.003 D 0.78520505 
D 2.21 D 0.009 D 0.80205985 D 2.21 D 0.027 D 0.83085105 D 2.24 D 0.001 D 0.7227
885 D 2.24 D 0.002 D 0.73391615 D 2.24 D 0.005 D 0.7543979 D 2.24 D 0.015 D 0.7
8798745 D 2.24 D 0.003 D 0.74176635 D 2.24 D 0.009 D 0.77064805 D 2.24 D 0.027 
D 0.81042375 D 2.26 D 0.001 D 0.66545585 D 2.26 D 0.003 D 0.7012046 D 2.26 D 0.
005 D 0.721067 D 2.26 D 0.009 D 0.7447984 D 2.26 D 0.015 D 0.76715245 D 2.26 D 
0.027 D 0.794177 D 2.27 D 0.001 D 0.62916195 D 2.27 D 0.003 D 0.6774642 D 2.27 
D 0.009 D 0.72961785 D 2.27 D 0.027 D 0.7861086 D 2.28 D 0.001 D 0.5750828 D 2.
28 D 0.003 D 0.65059675 D 2.28 D 0.005 D 0.6802631 D 2.28 D 0.009 D 0.7145367 D
 2.28 D 0.015 D 0.74447695 D 2.28 D 0.027 D 0.7774403 D 2.29 D 0.001 D 0.513572
55 D 2.29 D 0.002 D 0.581053 D 2.29 D 0.003 D 0.6173075 D 2.29 D 0.009 D 0.6972
096 D 2.29 D 0.027 D 0.76793225 D 2.31 D 0.001 D 0.36997965 D 2.31 D 0.002 D 0.
474415 D 2.31 D 0.003 D 0.53649295 D 2.31 D 0.009 D 0.6587164 D 2.31 D 0.016 D 
0.70870255 D 2.31 D 0.027 D 0.7482423 D 2.31 D 0.05 D 0.7912395 D 2.34 D 0.001 
D 0.2204104 D 2.34 D 0.002 D 0.316308 D 2.34 D 0.003 D 0.39256745 D 2.34 D 0.00
4 D 0.45240835 D 2.34 D 0.009 D 0.5883453 D 2.34 D 0.016 D 0.6590771 D 2.34 D 0
.027 D 0.71444205 D 2.34 D 0.05 D 0.7690014 D 2.38 D 0.001 D 0.13286995 D 2.38 
D 0.002 D 0.1828288 D 2.38 D 0.004 D 0.2980268 D 2.38 D 0.008 D 0.4507145 D 2.3
8 D 0.016 D 0.58417075 D 2.38 D 0.032 D 0.6833616' not found..
\@pstrickserr ... immediate help.}\errmessage {#1}
                                                  \endgroup 
l.74   \fileplotThreeD{\data}

What do I have to do in order the get a 3D plot if the data above with PSTricks?

Update

Using Herbert's answer, I get the following plot (where the axes are ajusted and the coordinates for the pspicture environment are added):

\documentclass{article}

\usepackage{pst-3dplot}

\begin{filecontents*}{plotting-of-3d-surface.data}
2.17    0.001   0.82044815
2.17    0.002   0.82345825
2.17    0.004   0.82679255
2.17    0.008   0.83334715
2.17    0.016   0.84395915
2.17    0.032   0.8584953
2.21    0.001   0.77582165
2.21    0.003   0.78520505
2.21    0.009   0.80205985
2.21    0.027   0.83085105
2.24    0.001   0.7227885
2.24    0.002   0.73391615
2.24    0.005   0.7543979
2.24    0.015   0.78798745
2.24    0.003   0.74176635
2.24    0.009   0.77064805
2.24    0.027   0.81042375
2.26    0.001   0.66545585
2.26    0.003   0.7012046
2.26    0.005   0.721067
2.26    0.009   0.7447984
2.26    0.015   0.76715245
2.26    0.027   0.794177
2.27    0.001   0.62916195
2.27    0.003   0.6774642
2.27    0.009   0.72961785
2.27    0.027   0.7861086
2.28    0.001   0.5750828
2.28    0.003   0.65059675
2.28    0.005   0.6802631
2.28    0.009   0.7145367
2.28    0.015   0.74447695
2.28    0.027   0.7774403
2.29    0.001   0.51357255
2.29    0.002   0.581053
2.29    0.003   0.6173075
2.29    0.009   0.6972096
2.29    0.027   0.76793225
2.31    0.001   0.36997965
2.31    0.002   0.474415
2.31    0.003   0.53649295
2.31    0.009   0.6587164
2.31    0.016   0.70870255
2.31    0.027   0.7482423
2.31    0.05    0.7912395
2.34    0.001   0.2204104
2.34    0.002   0.316308
2.34    0.003   0.39256745
2.34    0.004   0.45240835
2.34    0.009   0.5883453
2.34    0.016   0.6590771
2.34    0.027   0.71444205
2.34    0.05    0.7690014
2.38    0.001   0.13286995
2.38    0.002   0.1828288
2.38    0.004   0.2980268
2.38    0.008   0.4507145
2.38    0.016   0.58417075
2.38    0.032   0.6833616
\end{filecontents*}

\makeatletter
\pst@def{ScalePointsThreeD}<%
  counttomark dup dup cvi eq not { exch pop } if
  /m exch def /n m 3 div cvi def
  n {               % now we have x y z
    5 mul 3 1 roll    % z 
    100 mul 3 1 roll  % y
    3 1 roll          % x
    tx@3DPlotDict begin
    saveCoor
    ConvertTo2D
    x2D \pst@number\psxunit mul y2D \pst@number\psyunit mul 
    end
    m 1 sub 1 roll m 1 sub 1 roll /m m 3 sub def
  } repeat>
\makeatother

\pagestyle{empty}

\begin{document}

\begin{figure}[htbp]
\centering
\readdata{\data}{plotting-of-3d-surface.data}
 \begin{pspicture}(-2.5,-1.3)(2.5,4)
  \pstThreeDCoor[xMin=0,xMax=3,yMin=0,yMax=3,zMin=0,zMax=4]
  \listplotThreeD[plotstyle=curve]{\data}
 \end{pspicture}
\end{figure}

\end{document}

output

8

Redefine of the internal scaling macro to get better x,y,z values. It makes more sense than using the default unit key for the 2D view:

\documentclass{article}    
\usepackage{pst-3dplot}
\begin{filecontents*}{plotting-of-3d-surface.data}
2.17    0.001   0.82044815
2.17    0.002   0.82345825
2.17    0.004   0.82679255
2.17    0.008   0.83334715
2.17    0.016   0.84395915
2.17    0.032   0.8584953
2.21    0.001   0.77582165
2.21    0.003   0.78520505
2.21    0.009   0.80205985
2.21    0.027   0.83085105
2.24    0.001   0.7227885
2.24    0.002   0.73391615
2.24    0.005   0.7543979
2.24    0.015   0.78798745
2.24    0.003   0.74176635
2.24    0.009   0.77064805
2.24    0.027   0.81042375
2.26    0.001   0.66545585
2.26    0.003   0.7012046
2.26    0.005   0.721067
2.26    0.009   0.7447984
2.26    0.015   0.76715245
2.26    0.027   0.794177
2.27    0.001   0.62916195
2.27    0.003   0.6774642
2.27    0.009   0.72961785
2.27    0.027   0.7861086
2.28    0.001   0.5750828
2.28    0.003   0.65059675
2.28    0.005   0.6802631
2.28    0.009   0.7145367
2.28    0.015   0.74447695
2.28    0.027   0.7774403
2.29    0.001   0.51357255
2.29    0.002   0.581053
2.29    0.003   0.6173075
2.29    0.009   0.6972096
2.29    0.027   0.76793225
2.31    0.001   0.36997965
2.31    0.002   0.474415
2.31    0.003   0.53649295
2.31    0.009   0.6587164
2.31    0.016   0.70870255
2.31    0.027   0.7482423
2.31    0.05    0.7912395
2.34    0.001   0.2204104
2.34    0.002   0.316308
2.34    0.003   0.39256745
2.34    0.004   0.45240835
2.34    0.009   0.5883453
2.34    0.016   0.6590771
2.34    0.027   0.71444205
2.34    0.05    0.7690014
2.38    0.001   0.13286995
2.38    0.002   0.1828288
2.38    0.004   0.2980268
2.38    0.008   0.4507145
2.38    0.016   0.58417075
2.38    0.032   0.6833616
\end{filecontents*}

\makeatletter
\pst@def{ScalePointsThreeD}<%
  counttomark dup dup cvi eq not { exch pop } if
  /m exch def /n m 3 div cvi def
  n {               % now we have x y z
    5 mul 3 1 roll    % z 
    100 mul 3 1 roll  % y
    3 1 roll          % x
    tx@3DPlotDict begin
    saveCoor
    ConvertTo2D
    x2D \pst@number\psxunit mul y2D \pst@number\psyunit mul 
    end
    m 1 sub 1 roll m 1 sub 1 roll /m m 3 sub def } repeat>
\makeatother
\begin{document}

\readdata{\data}{plotting-of-3d-surface.data}
 \begin{pspicture}
  \pstThreeDCoor[xMin=0,xMax=2.4,yMin=0,yMax=1,zMin=0,zMax=5]
  \listplotThreeD[plotstyle=curve]{\data}
 \end{pspicture}

\end{document}

enter image description here

  • That was far beyond my knowledge! Thanks and Upvote for that :) I was going to go with x(yz)ThreeDunit! – Hasan Zakeri Jun 7 '13 at 20:38
  • @Herbert: Could you please explain, what the \makeat...-block does? – Henri Menke Jun 7 '13 at 20:50
  • 2
    @HenriMenke: handling the sequenz of data: x y z x y z ... and converting it into x2d y2d – user2478 Jun 8 '13 at 6:29
6

The correct syntax for \fileplotThreeD is

\fileplotThreeD[Options]{datafile}

where datafile is not a command generated with \readdata, but a file name. therefore your example must be like this:

\documentclass{article}

\usepackage{pst-3dplot}

\begin{filecontents*}{plotting-of-3d-surface.data}
2.17    0.001   0.82044815
2.17    0.002   0.82345825
2.17    0.004   0.82679255
2.17    0.008   0.83334715
2.17    0.016   0.84395915
2.17    0.032   0.8584953
2.21    0.001   0.77582165
2.21    0.003   0.78520505
2.21    0.009   0.80205985
2.21    0.027   0.83085105
2.24    0.001   0.7227885
2.24    0.002   0.73391615
2.24    0.005   0.7543979
2.24    0.015   0.78798745
2.24    0.003   0.74176635
2.24    0.009   0.77064805
2.24    0.027   0.81042375
2.26    0.001   0.66545585
2.26    0.003   0.7012046
2.26    0.005   0.721067
2.26    0.009   0.7447984
2.26    0.015   0.76715245
2.26    0.027   0.794177
2.27    0.001   0.62916195
2.27    0.003   0.6774642
2.27    0.009   0.72961785
2.27    0.027   0.7861086
2.28    0.001   0.5750828
2.28    0.003   0.65059675
2.28    0.005   0.6802631
2.28    0.009   0.7145367
2.28    0.015   0.74447695
2.28    0.027   0.7774403
2.29    0.001   0.51357255
2.29    0.002   0.581053
2.29    0.003   0.6173075
2.29    0.009   0.6972096
2.29    0.027   0.76793225
2.31    0.001   0.36997965
2.31    0.002   0.474415
2.31    0.003   0.53649295
2.31    0.009   0.6587164
2.31    0.016   0.70870255
2.31    0.027   0.7482423
2.31    0.05    0.7912395
2.34    0.001   0.2204104
2.34    0.002   0.316308
2.34    0.003   0.39256745
2.34    0.004   0.45240835
2.34    0.009   0.5883453
2.34    0.016   0.6590771
2.34    0.027   0.71444205
2.34    0.05    0.7690014
2.38    0.001   0.13286995
2.38    0.002   0.1828288
2.38    0.004   0.2980268
2.38    0.008   0.4507145
2.38    0.016   0.58417075
2.38    0.032   0.6833616
\end{filecontents*}

\begin{document}

\begin{figure}
\centering
 \begin{pspicture}
  %\readdata{\data}{plotting-of-3d-surface.data}
  \pstThreeDCoor[xMin=2.1,xMax=2.4,yMin=0,yMax=0.1,zMin=0,zMax=1]
  \fileplotThreeD{plotting-of-3d-surface.data}
 \end{pspicture}
\end{figure}

\end{document}

note that the only difference is commenting out the line containing \readdata and change in the parameter of \fileplotThreeD.

  • When I compile your code, I don't get an error, but the output is wierd. I think it could have something to do with the ranges. Can I make you show me how to get a nice output? – Svend Tveskæg Jun 7 '13 at 19:28
  • I think it is mostly because of your date, they are too much crowded in some areas. If you use \pstThreeDCoor[xMin=0,xMax=3,yMin=0,yMax=3,zMin=0,zMax=3], you will have a more natural axis, but the data is still looks like a black arc. – Hasan Zakeri Jun 7 '13 at 19:35
  • Hmmm. Isn't it possible to do something about that, e.g., transform the data or something, in order to get a nice plot? – Svend Tveskæg Jun 7 '13 at 19:41
  • ...or scale the axes or something? – Svend Tveskæg Jun 7 '13 at 20:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.