如何获取等高线或曲面打印表单数据文件(使用gnuplot)?

如何获取等高线或曲面打印表单数据文件(使用gnuplot)?,gnuplot,Gnuplot,我想使用gnuplot来绘制我的2d函数ch(x,y)。我的数据文件的结构如下: x1 y1 ch(x1,y1) x2 x2 ch(x2,y2) x3 y3 ch(x3,y3) x1 y1 ch(x1,y1) x4 y4 ch(x4,y4) ... ... ... ... 其中,我的函数值位于构成(三角形,非结构化)网格的每个三角形的3个顶点处(见图)。 我想得到的是两个独立的数字: 1.曲面类似于此,带有一个颜色条作为图例: 和 2.类似的东西,但轮廓线,用一个色条作为图例 如何使用gn

我想使用gnuplot来绘制我的2d函数ch(x,y)。我的数据文件的结构如下:

x1 y1 ch(x1,y1)
x2 x2 ch(x2,y2)
x3 y3 ch(x3,y3)
x1 y1 ch(x1,y1)

x4 y4 ch(x4,y4)
...
...
...

...
其中,我的函数值位于构成(三角形,非结构化)网格的每个三角形的3个顶点处(见图)。 我想得到的是两个独立的数字: 1.曲面类似于此,带有一个颜色条作为图例: 和 2.类似的东西,但轮廓线,用一个色条作为图例

如何使用gnuplot获得这两个数字? 例如,我试过做第一个:

set palette rgbformulae 33,13,10
set xrange [0: 0.25]
set yrange [0: 0.20]
set view map
splot "mydatafile.txt" w l pal 
但是里面的三角形是白色的(没有填充颜色),只有三角形的边是彩色的。 轮廓线呢

提前谢谢大家,


Keccogrin

为了制作彩色贴图,您需要预处理数据,以便通过两条空线将每个三角形从以下三角形中分离出来,并复制其中一个点以制作退化四边形,中间有一条空线:

x1 y1 ch(x1,y1)
x2 x2 ch(x2,y2)

x3 y3 ch(x3,y3)
x3 y3 ch(x3,y3)


x1 y1 ch(x1,y1)
x2 x2 ch(x2,y2)

x4 y4 ch(x4,y4)
x4 y4 ch(x4,y4)

...
然后:

要处理数据,您可以使用以下
awk
脚本:

{
 print $0
 if (NR % 3 == 2) print ""
 if (NR % 3 == 0) print $0 "\n\n"
}

在linux shell下,使用
awk-f script.awk data.txt>data.dat
运行它。如果只打印一次,您可以在plot的参数中“动态”运行它(如
plot”您可以让gnuplot为您生成网格数据,如下所示:

set dgrid3d spline
set table $Gridded
splot "mydatafile.txt"
unset table
unset dgrid3d
然后可以将(网格化)数据与等高线一起绘制,如下所示:

set view map
set contour base
set cntrlabel onecolor
set cntrlabel  format '%h' font ',8'
set cntrlabel start 25 interval 200
set cntrparam bspline
set cntrparam order 10
set cntrparam levels 10 
set pm3d at b explicit
splot $Gridded with pm3d, \
      $Gridded with labels nosurface
第一条splot线将为您提供热图和等高线,第二条线将为您提供等高线标签。
此外,您可能希望阅读dgrid3d上的文档并使用选项。根据您的数据,样条线可能不会给出令人满意的结果(我使用具有相对较大dx值的高斯滤波器取得了一些成功,但这实际上取决于您的数据以及您希望热图看起来“平滑”的程度).

那么…这是唯一的方法吗?我如何预处理我的数据文件?实际上,我应该写什么命令,例如,在我的Ubuntu终端中?我只知道命令“diff”"事实并非如此,对吗?它是否已经组织好,使第3*k+1、3*k+2和3*k+3行对应一个三角形?如果是,一个
awk
脚本应该很容易编写。是的,我的文件的结构与我在第一篇文章中写的完全相同。你如何用awk修改它?嗨,我编译了脚本,但发现
set cntrlabel onecolor
命令无效。下面是错误消息:
有效设置选项:[]=选择一个,{}表示可选……
似乎应该添加一些设置选项。
set view map
set contour base
set cntrlabel onecolor
set cntrlabel  format '%h' font ',8'
set cntrlabel start 25 interval 200
set cntrparam bspline
set cntrparam order 10
set cntrparam levels 10 
set pm3d at b explicit
splot $Gridded with pm3d, \
      $Gridded with labels nosurface