我正在尝试使用 PsTricks 绘制大数字。在 Herbert Voss 的PSTricks: Graphics and PostScript for TeX and LaTeX
书(德文版,2007 年,第 4 版)中有以下代码:
\usepackage{pstricks-add}
\readdata{\data}{data.dat} \psset{xunit=0.11mm,yunit=0.00015mm}
\begin{pspicture}(-80,-30000) (1000,310000)
\psaxes[axesstyle=frame,Dx=100,dx=100,Dy=50000,dy=50000](1000,300000)
\listplot [linewidth=1pt,linecolor=black!30] {\data} %aIle
\listplot [nStep=50,linewidth=2pt,plotstyle=dots] {\data}% jeder 50.
\end{pspicture}
使用上述内容,我制作了类似的代码:
\documentclass[12pt]{article}
\usepackage{pst-plot,pstricks-add}
\begin{document}
\readdata{\data}{data.dat} \psset{xunit=0.11mm,yunit=0.00015mm}
\begin{pspicture}(-80,-30000) (1000,310000)
\psaxes[axesstyle=frame,Dx=100,dx=100,Dy=50000,dy=50000](1000,300000)
\listplot [linewidth=1pt,linecolor=red] {\data}
\end{pspicture}
\end{document}
内容data.dat
为
0 0
100 10000
200 15000
300 20000
400 50000
500 80000
600 100000
700 150000
800 160000
在编译时我收到错误消息:
! Dimension too large.
<to be read again>
=
l.8 \listplot
[linewidth=1pt,linecolor=red] {\data}
?
900 200000
我究竟做错了什么?
多谢...
更新
包含 Herbert 第二个代码的日志文件的结尾是:
(c:/texlive/2011/texmf-dist/tex/generic/multido/multido.tex
v1.42, 2010/05/14 <tvz>))
(c:/texlive/2011/texmf-dist/tex/generic/pst-plot/pst-plot.tex
v1.34, 2011/11/07 (tvz,hv)))
No file withpstri6.aux.
)
*
答案1
标签是在 TeX 端设置的,处理如此大的数字比较困难。使用方法如下:
\documentclass[12pt]{article}
\usepackage{filecontents}
\begin{filecontents*}{data.dat}
0 0
100 10000
200 15000
300 20000
400 50000
500 80000
600 100000
700 150000
800 160000
\end{filecontents*}
\usepackage{pst-plot}
\begin{document}
\readdata{\data}{data.dat}
\psset{xunit=0.11mm,yunit=0.15mm,
ylabelFactor=$\times10^3$,labelFontSize=\footnotesize,mathLabel=false}
\pstScalePoints(1,1){}{1.e3 div}
\begin{pspicture}(-80,-30) (1000,310)
\psaxes[axesstyle=frame,Dx=100,dx=100,Dy=50,dy=50,ticksize=0 4pt](1000,300)
\listplot [linewidth=1.5pt,linecolor=red] {\data}
\end{pspicture}
\end{document}
对 y 进行局部单位变换也是一样的(不使用\pstScalePoints
:
\documentclass[12pt]{article}
\usepackage{filecontents}
\begin{filecontents*}{data.dat}
0 0
100 10000
200 15000
300 20000
400 50000
500 80000
600 100000
700 150000
800 160000
\end{filecontents*}
\usepackage{pst-plot}
\begin{document}
\readdata{\data}{data.dat}
\psset{xunit=0.11mm,yunit=0.15mm,
ylabelFactor=$\times10^3$,labelFontSize=\footnotesize,mathLabel=false}
\begin{pspicture}(-80,-30) (1000,310)
\psaxes[axesstyle=frame,Dx=100,dx=100,Dy=50,dy=50,ticksize=0 4pt](1000,300)
\listplot [yunit=0.001,plotstyle=values,rot=90] {\data}
\listplot [yunit=0.001,linewidth=1.5pt,linecolor=red] {\data}
\end{pspicture}
\end{document}