3

我有一个关于 pm3d 和 gnuplot 的问题。我想用两种不同的 pm3d 样式绘制两个不同的表面。我怎样才能做到这一点?可能吗?我尝试使用多图,但在这种情况下,表面会重叠,我无法旋转图形。任何帮助将不胜感激,谢谢!

4

1 回答 1

4

这是一个带有伪数据的示例:

reset 
set xrange[0:1]
set yrange[0:1]
set cbrange[0:1]
set palette defined (0 'green', 1 'red', 1 'blue', 2 'white')
set isosamples 100
set samples 100
set pm3d depthorder
set view 60,335
splot '++' using 1:2:2:(0.5*$2) with pm3d title 'red -> green',\
      '++' using 1:2:1:(0.5*(1+$1)) with pm3d title 'blue -> white'

结果: 在此处输入图像描述

要使用数据而不是由 '++' 生成的这些伪数据,您可以使用stats来确定数据范围并相应地缩放表面颜色,以[0:0.5]用于一个和[0.5:1]另一个。

这个具有不同颜色范围的概念将两个调色板合并为一个仅适用于数据文件(包括伪数据文件)。要绘制不同颜色的两个球体,可以首先生成一个数据文件,该文件稍后用于pm3d绘图:

reset 
# generate the sphere data
set samples 100
set isosamples 100
set parametric
set urange[0:2*pi]
set vrange[0:pi]
set table 'spheres.dat'
r = 0.25
splot r*cos(u)*sin(v),r*sin(u)*sin(v),r*cos(v) with lines
unset table
unset parametric

# plot the generated data set
set xrange[-1:1]
set yrange[-1:1]
set cbrange[-1:3]
set palette defined (0 'black', 1 'green', 1 'black', 2 'red')

set pm3d depthorder
unset colorbox
unset key
set ticslevel 0
set view 19,34
splot 'spheres.dat' using ($1-0.5):2:3:($3/r) with pm3d, \
      '' using ($1+0.5):2:3:($3/r + 2) with pm3d

结果是 在此处输入图像描述

于 2013-08-15T08:44:27.720 回答