Gnuplot,pm3d有等高线

时间:2016-03-05 19:36:00

标签: plot gnuplot streamline

我正在用一些值绘制一个矩阵,我需要在绘图中添加轮廓线,是否有一个简单的gnuplot命令来执行此操作?

我尝试了命令:"设置轮廓基数"但只有一行出现,我认为它应该是很多行。见matlab图片

当我在gnuplot中绘制它时,我只在左上角得到1条轮廓线。但其他一切都是正确的。

我的目标是让它在matlab中看起来像Matlabplot

我也发现了这个例子:看到评论中的链接(没有足够的代表),但我不明白我应该把它放在test.txt的数据值中

的test.txt

test.txt

gnuplot命令

set view map
set yrange [0:30]
set xrange [0:30]
set dgrid3d 100,100,4
set contour base
splot 'test.txt' u 1:2:3 w pm3d

1 个答案:

答案 0 :(得分:2)

你缺少的是告诉gnuplot把轮廓放在哪里。这是通过set cntrparam levels incr -0.3,0.1,0.5命令完成的,这意味着:从-0.3开始,每隔o.1跟踪一个轮廓,最多0.5

AFAIK如果要将轮廓全部变为黑色,则必须将轮廓线保存在临时文件中(此处为contour.txt)。

所以你的脚本将是

reset
set contour
unset surface
set cntrparam levels incr -0.3,0.1,0.5

set view map
set xrange [0:30]
set yrange [0:30]

set dgrid3d 100,100,4

set table "contour.txt"
splot 'test.txt'
unset table

unset contour
set surface
set table "dgrid.txt"
splot 'test.txt'
unset table

reset
set pm3d map
unset key
set palette defined (0 '#352a87', 1 '#0363e1',2 '#1485d4', 3 '#06a7c6', 4 '#38b99e', 5 '#92bf73', 6 '#d9ba56', 7 '#fcce2e', 8 '#f9fb0e')
set autoscale fix
set grid

splot 'dgrid.txt' w pm3d, 'contour.txt' w l lc rgb "black"

给你这个:

here

注意:

如果通过在每行(即每30个数据点)后留一个空行来格式化数据文件,可以删除插值文件(dgrid.txt),因为它们已经是网格排序的。

这也可以使用awk脚本完成。但是我懒得去研究它......

其余的将保持不变,并将按预期工作。

这是它应该是什么样子:

在这种情况下,脚本将简单地变为:

set pm3d map impl
set contour
set style increment user
do for [i=1:18] { set style line i lc rgb "black"}
set cntrparam levels incr -0.3,0.1,0.5
set palette defined (0 '#352a87', 1 '#0363e1',2 '#1485d4', 3 '#06a7c6', 4 '#38b99e', 5 '#92bf73', 6 '#d9ba56', 7 '#fcce2e', 8 '#f9fb0e')
set autoscale fix
splot 'test.txt' w pm3d notitle

不需要中间文件并且具有更好的轮廓,因为数据不通过网格插入:

enter image description here