我是 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)
...