带有 pgf 中坐标的表面图

带有 pgf 中坐标的表面图

是否可以使用坐标而不是公式来绘制三维表面?

MWE 到目前为止:

\documentclass{article}
\usepackage{pgfplots}

\begin{document}

 \begin{tikzpicture}
  \begin{axis} 
   \addplot3 coordinates
    {(23, 75, 13000) (23, 80, 14000) (23, 85, 15000) (23, 90, 16000) (23, 95, 17000) (28, 65, 7000) (28, 70, 8000) (28, 75, 9000) (28, 80, 10000) (28, 85, 11000) (28, 90, 12000) (28, 95, 13000)};
  \end{axis}
 \end{tikzpicture}

\end{document}

答案1

是的,这是可能的。根据手册,您需要读取一个数据文件,y 值之间有一个空行。即使您要求坐标,我猜如果您可以读取文件,那么在代码中输入它们并不方便,

0 0 0
1 0 1
2 0 1.5

0 1 0.5
1 1 2
2 1 0.7

然后你可以读取这个文件

\documentclass{article}

\usepackage{pgfplots}

\begin{document}
 \begin{tikzpicture}
  \begin{axis}
   \addplot3[surf] file {test.dat};
  \end{axis}
 \end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

是的,你可以,例如

\begin{tikzpicture}

\begin{axis}[%
view={64}{26},
width=6cm,
height=6cm,
scale only axis,
xmin=1, xmax=11,
xmajorgrids,
ymin=1, ymax=11,
ymajorgrids,
zmin=0, zmax=1,
zmajorgrids,
axis lines=left,
grid=major]

\addplot3[%
surf,
z buffer=sort,
colormap/jet,
shader=flat,
draw=black]
coordinates{ 
(1,1,0.003728147889839)(1,2,0.118017202190155)(1,3,0.221673852437962)(1,4,0.312437513085561)(1,5,0.387194230510164)(1,6,0.440742582360006)(1,7,0.463468053018881)(1,8,0.445530073971387)(1,9,0.369961896202074)(1,10,0.223133553545923)(1,11,0.00374437935895966)

(2,1,0.0853329617250701)(2,2,0.220790622984148)(2,3,0.34459776553185)(2,4,0.454212891948978)(2,5,0.545783375378684)(2,6,0.613545573836728)(2,7,0.64680888751547)(2,8,0.636747129886029)(2,9,0.565721840578472)(2,10,0.417666014278492)(2,11,0.190999599472948)

(3,1,0.155342172376848)(3,2,0.309822662999299)(3,3,0.451065683608965)(3,4,0.575854462426754)(3,5,0.679376623358995)(3,6,0.754507795686183)(3,7,0.791577077817509)(3,8,0.784476347356156)(3,9,0.716691470085854)(3,10,0.569332748623411)(3,11,0.337025756909602)

(4,1,0.212516702294838)(4,2,0.383413316206777)(4,3,0.538530906131096)(4,4,0.673799219102328)(4,5,0.783219850668224)(4,6,0.860688297993034)(4,7,0.897887375321675)(4,8,0.890237828914889)(4,9,0.823602501614381)(4,10,0.677448189094015)(4,11,0.441428715403078)

(5,1,0.254983315520193)(5,2,0.438736497199194)(5,3,0.603204205115548)(5,4,0.743748933219212)(5,5,0.855393671944023)(5,6,0.932369802409294)(5,7,0.967098925205277)(5,8,0.956526922577927)(5,9,0.887418134294991)(5,10,0.740716702498437)(5,11,0.502904188748348)

(6,1,0.279580042690462)(6,2,0.471776755427732)(6,3,0.641183297852209)(6,4,0.78372415732377)(6,5,0.894763524461618)(6,6,0.96932619948012)(6,7,1)(6,8,0.983845729330807)(6,9,0.90893190033403)(6,10,0.759475982572268)(6,11,0.520322817339646)

(7,1,0.284834740456549)(7,2,0.481516089344792)(7,3,0.652805651854105)(7,4,0.794573169483346)(7,5,0.902690136956274)(7,6,0.972631989838986)(7,7,0.997044798062995)(7,8,0.972934675632469)(7,9,0.889610739961573)(7,10,0.733952138770354)(7,11,0.493118988206001)

(8,1,0.260000140257993)(8,2,0.458905596305152)(8,3,0.630100484670537)(8,4,0.769792184032965)(8,5,0.873966940512854)(8,6,0.938215110739908)(8,7,0.955181067976377)(8,8,0.922095282456408)(8,9,0.828947405628713)(8,10,0.666520564592709)(8,11,0.425421376290589)

(9,1,0.20615424917805)(9,2,0.405132944780996)(9,3,0.574423435029049)(9,4,0.710286034681503)(9,5,0.808767108505734)(9,6,0.865736341444958)(9,7,0.873670136506091)(9,8,0.829968574292227)(9,9,0.72694189733545)(9,10,0.558708262360719)(9,11,0.319605261982135)

(10,1,0.121089587416419)(10,2,0.318276996185098)(10,3,0.483962856064423)(10,4,0.614131829616855)(10,5,0.705164299228662)(10,6,0.752989955378732)(10,7,0.749403083481442)(10,8,0.694354027683535)(10,9,0.582577966759085)(10,10,0.412436427217246)(10,11,0.178613291865232)

(11,1,0.00373165433961165)(11,2,0.197146575595497)(11,3,0.356969085894562)(11,4,0.479350121385376)(11,5,0.560843124717293)(11,6,0.596526001852086)(11,7,0.579610492247863)(11,8,0.513717740520685)(11,9,0.39754877669582)(11,10,0.229574845227007)(11,11,0.00374273924535296)

};

\end{axis}
\end{tikzpicture}

生成这个

在此处输入图片描述

答案3

我最近使用了这种图,几乎和 Martin H 的回答一样。不同之处在于使用 table 命令而不是 file。这样,您就可以获得像这样格式化的数据,其中包含多个数据列

-3 0 0.2 0.20 0.2
-3 0.25 0.57 0.71 0.71
-3 0.5 0.73 0.78 0.83
-3 0.75 0.85 0.88 0.91
-3 0.95 0.97 0.98 0.98

-2 0 0.29 0.29 0.29
-2 0.25 0.59 0.64 0.68
-2 0.5 0.73 0.78 0.80
-2 0.75 0.85 0.88 0.90
-2 0.95 0.96 0.98 0.98

-1 0 0.42 0.42 0.42
-1 0.25 0.65 0.65 0.65
-1 0.5 0.74 0.79 0.79
-1 0.75 0.87 0.89 0.90
-1 0.95 0.97 0.97 0.98

0 0 0.7 0.71 0.71
0 0.25 0.75 0.76 0.74
0 0.5 0.82 0.81 0.82
0 0.75 0.89 0.90 0.90
0 0.95 0.97 0.97 0.97

1 0 0.91 0.91 0.91
1 0.25 0.90 0.91 0.91
1 0.5 0.91 0.91 0.91
1 0.75 0.93 0.93 0.93
1 0.95 0.95 0.95 0.95

然后,像这样调用 addplot

\addplot3[散射,冲浪,z缓冲区=排序]
表[x 索引=0,y 索引=1,z 索引=3] {myfile.dat};

用键选择数据列z index=。(使用pgfplots版本1.5.1)

相关内容