为什么我无法使用 pgfplots 导入外部 3D 图?

为什么我无法使用 pgfplots 导入外部 3D 图?

我曾尝试从 Matlab 等导入外部 3D 图,但无济于事。为了展示我所取得的成就,我在下面提供了一个最小的非工作示例。您知道我做错了什么吗?

干杯,斯蒂法诺斯

生成文件:

all: 3dtest.pdf

3dtest.pdf: 3dtest.tex bumps.png
    latexmk -pdflatex="xelatex -shell-escape " -pdf 3dtest.tex

bumps.png: bumps.m
    matlab -nodesktop -nosplash -r "bumps;exit"
    sleep 1
    reset
    convert bumps.png -trim +repage -transparent white bumps.png

bumps.m(不要费心用 Octave 运行它,因为某种原因,保存表面图的速度非常慢,而且结果也不是很好):

function bumps()
  figure(1)
  [X,T]=meshgrid(linspace(0,1,400),linspace(0,2,400));
  c=[3 2 5 4];
  surf(X,T,abs(sin(c(1)*pi*X).*exp(1j*c(2)*pi*T)+sin(c(3)*pi*X).*exp(1j*c(4)*pi*T)))
  shading interp
  colormap(jet(1000))
  axis off
  setPapersize(6*[4 3])
  print -dpng bumps
end

function setPapersize(papersize)
  set (gcf,'papertype', '<custom>')
  set (gcf, 'papersize', papersize)
  set (gcf, 'paperposition', [0 0 papersize])
end

3dtest.tex:

\documentclass{standalone}
\usepackage{tikz,pgfplots}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[width=10cm]
    \addplot3 graphics[points={
      (0,0,0) => (1212,0)
      (1,0,0) => (2791,428)
      (0,2,0) => (0,557)
      (0.8872,2,1.854) => (1398,2064)
      (1,2,2)
    }] {bumps};
  \end{axis}
\end{tikzpicture}

\end{document}

生成的图像:

图像

编辑:原始图像:

图像

仅供参考,我在 Texlive 2012 上,使用 XeLaTeX(如 Makefile 中所示)。

答案1

我发现它可以在我的系统上运行,既可以运行 TL 2011 也可以运行 TL 2012,也可以运行 pdflatex 和 xelatex - 只要我使用.png图像的版本。xelatex无法编译.jpg(这是问题中图形的格式);pdflatex 每次都可以工作。

我猜测是你的系统的安装出了问题;尽管我无法根据你的.log文件(通过私人电子邮件发送)找到问题所在。

答案2

没有 MatLab 也一样。使用xelatex或运行latex->dvips->ps2pdf

\documentclass[pstricks]{standalone}
\usepackage{pst-solides3d}
\begin{document}

\psset{Decran=60,viewpoint=20 70 15 rtp2xyz}
\begin{pspicture}(-7,-5)(5.5,6.5)
\psSurface[ngrid=0.02 0.02,linewidth=0.2pt,axesboxed,algebraic,
   grid=true,showAxes=false,
   tablez=0 0.1 2 { } for, zcolor=0.5 1 1 0.03 1 1 (hsb), 
   Zmin=0,Zmax=2](0,0)(2,4)%
 {sqrt((sin(3*Pi*x/2)*cos(2*Pi*y/2)+sin(5*Pi*x/2)*cos(4*Pi*y/2))^2+
        (sin(3*Pi*x/2)*sin(2*Pi*y/2)+sin(5*Pi*x/2)*sin(4*Pi*y/2))^2 )}
\end{pspicture}

\end{document}

在此处输入图片描述

相关内容