gnuplot中的4D等高线图

时间:2016-12-14 10:00:36

标签: gnuplot

我有4D数据X,Y,Z加上一个字段。我想做一个局限于球体的4d图。我已经使用splot w pm3d在我的字段索引的球体上设置了颜色条,但我认为如果我可以添加3d轮廓线,它会更具可读性。

我想要像http://www.originlab.com/index.aspx?go=Products/Origin/Graphing

那样的“功能图”(蛋白质定位)的最后一个例子

甚至可以在gnuplot中使用吗?如果是的话,该怎么做?

1 个答案:

答案 0 :(得分:1)

Gnuplot无法生成4d等高线图。

但是,如果我理解正确,你有一个特例,你真的没有4d数据。 z坐标取决于x和y,使得该点位于球体上。也许这可以用来获得轮廓。

我假设数据文件包含完整球体的数据点,从球体的底部到顶部按圆圈排列,每个圆圈在一个单独的块中。

我试过这个:

  • 将上半部分与球体下半部分的点分开,我们需要将这种分离作为z的符号。
  • 在两个数据文件contour_l.dat和contour_u.dat中绘制两半的轮廓。这只会绘制x和y坐标。
  • 将原始数据文件和两个轮廓数据文件合并为一个图。毕达哥拉斯可以帮助重建轮廓数据文件的z坐标。

这是剧本:

set pm3d depthorder interpolate 5,5
set hidden3d front

unset surface
set contour surface

set zrange [0:1.1]
set table "contour_u.dat"
splot "sh.dat" using 1:2:4 w l
unset table

set zrange [-1.1:0]
set table "contour_l.dat"
splot "sh.dat" using 1:2:4 w l
unset table

set surface
unset contour

set xrange [-1.1:1.1]
set yrange [-1.1:1.1]
set zrange [-1.1:1.1]
set xyplane relative 0.0

set terminal pngcairo size 640,640
set output "c.png"

unset key

splot "sh.dat" using 1:2:3:4 w pm3d, \
      "contour_u.dat" using 1:2:( sqrt(1.0-($1*$1+$2*$2))):3 w l lc rgb "black",\
      "contour_l.dat" using 1:2:(-sqrt(1.0-($1*$1+$2*$2))):3 w l lc rgb "black"

你没有发布数据,所以我采用了一种球谐函数。使用Gnuplot 4.6,我得到以下结果:

sphere with pm3d and contour lines

正如您所看到的,它仍然不完美。应调查x = 0处的轮廓,如果我删除"sh.dat" w pm3d线,则图像变得非常奇怪。

但至少这种方法可能是一个起点,可以尝试手动玩轮廓线数据文件。