缩放 pst-3dplot 以适合 Beamer 框架

缩放 pst-3dplot 以适合 Beamer 框架

我是 pstricks 的新手。我正在寻找一种自动调整绘图大小的方法。

我正在尝试将使用 pst-3dplot 生成的 3d 图放入 beamer 框架中。但是,我无法自动使其看起来不错。

如果我为 pspicture 设置一些框架坐标,则只会出现部分绘图。如果我不设置坐标,则不会出现绘图。我也尝试使用,\psset(unit=1mm)但它会压缩绘图,看起来不太好。有没有办法解决这个问题,而不必重新编译数百次?有没有办法让它自动调整为框架大小?

这是我正在做的事情的一个例子:

\documentclass{beamer}

% For the figures
\usepackage[pdf]{pstricks}
\usepackage{auto-pst-pdf}
\usepackage{pst-node, pst-plot, pst-circ, pst-3dplot}
\usepackage{moredefs}    

\begin{document}

\begin{frame}{3D}
\begin{center}

\begin{pspicture}%(-5,3)(5,-3)%<-uncomment this and just a part appears
\pstThreeDCoor[linecolor=black, IIIDticks,IIIDlabels,xMin=-20,xMax=20,yMin=-20, yMax=20,zMin=0,zMax=35]
\fileplotThreeD[linecolor=blue,plotstyle=line]{data.txt}
\end{pspicture}
\end{center}
\end{frame}    

\end{document}

data.txt 文件是这里

答案1

我使用了PSTricks很多,也为这个问题而苦恼。似乎使用时\psset你无法完全控制结果图形的大小。

下面是我用来指定图形大小的解决方案,它将计算xunit和的适当值yunit

我定义的命令\setwindow需要 5 个参数,其中大部分应该是不言自明的:按顺序排列

  • \xmin
  • \ymin
  • \xmax
  • \ymax
  • \figurewidth

这是 MWE

\documentclass{beamer}

% For the figures
\usepackage[pdf]{pstricks}
\usepackage{auto-pst-pdf}
\usepackage{pst-node, pst-plot, pst-circ, pst-3dplot}
\usepackage{moredefs}    

\newlength{\figurewidth}
% setwindow command: takes 6 arguments (1st is optional)
%       [1]. aspect ratio (height = aspect ratio * width) default=1
%         2. xmin (number)
%         3. ymin (number)
%         4. xmax (number)
%         5. ymax (number)
%         6. figurewidth (length)
\makeatletter
\newcommand{\setwindow}[6][1]{\def\xmin{#2}%
                           \def\ymin{#3}%
                           \def\xmax{#4}%
                           \def\ymax{#5}%
                           % set up xunit
                           \pstFPsub\viewingwidth{#4}{#2}%
                           \pstFPdiv\result{\strip@pt#6}{\viewingwidth}%
                           \psset{xunit=\result pt}
                           % set up yunit
                           \pstFPsub\viewingheight{#5}{#3}%
                           \pstFPdiv\result{\strip@pt#6}{\viewingheight}%
                           % set up aspect ratio
                           \pstFPmul\result{\result}{#1}%
                           \psset{yunit=\result pt}%
                           }
\makeatother

\begin{document}

\begin{frame}{3D}

  \centering
\setlength{\figurewidth}{9cm}
\setwindow{-20}{-20}{20}{30}{\figurewidth}
%\begin{pspicture}(-5,3)(5,-3)%<-uncomment this and just a part appears
\begin{pspicture}(\xmin,\ymin)(\xmax,\ymax)
\pstThreeDCoor[linecolor=black, IIIDticks,IIIDlabels,xMin=\xmin,xMax=\xmax,yMin=\ymin, yMax=\ymax,zMin=0,zMax=35]
\fileplotThreeD[linecolor=blue,plotstyle=line]{data.txt}
\end{pspicture}

\end{frame}    

\end{document}

\setwindow命令带有一个可选参数,您可以使用它来调整宽高比。例如,如果您使用

\setwindow[0.25]{-20}{-20}{20}{30}{\figurewidth}

那么图片的高度将是宽度的 1/4。

这种方法的好处在于你选择宽度然后计算xunit和和yunit的值不是反之亦然。它消除了所涉及的猜测工作\psset

答案2

...
\psset{unit=0.2}
    
\begin{pspicture}(-5,-1)(5,20)
    
...

相关内容