我无法使用 pm3d 地图绘制我的数据文件?Gnuplot

我无法使用 pm3d 地图绘制我的数据文件?Gnuplot

我有一个数据文件(.tab有 11 列和 ~30000 行),当我继续时gnuplot,我写道:

set pm3d map
splot "merged.tab" u x:y:z

并说:

Warning: Single isoline (scan) is not enough for a pm3d plot.
Hint: Missing blank lines in the data file? See 'help pm3d' and FAQ.

在其他文件上,它可以工作,但我不知道为什么它对这个文件不起作用。

我是否必须编辑文件才能获得我想要的列?但我真的无法通过.tab文件做到这一点?

任何帮助都将受到赞赏。

答案1

您的数据文件必须具有适当的网格格式(xyz 或矩阵 -> 这两个链接应该可以澄清[1][2])。按照 xyz 格式,您的 x 列必须以这样的方式排列:x 值的每次变化之间都有一个空行。

例如 xyz 网格格式为:

# X   Y    Z
  0   0    0
  0   1    1
  0   2    4
  0   3    9
  0   4   16
  0   5   25

  1   0    1
  1   1    2
  1   2    5
  1   3   10
  1   4   17
  1   5   26
  ... ... ...

采用这种网格格式的原因在于,您的目标是绘制等值线的二维投影,因为您使用pm3d地图

但是,请注意,如果您的数据文件包含数据(例如函数的结果),这并不一定意味着它们具有网格格式,您必须找到一种编程方法来赋予它们这种格式。也许这个 TAB 格式(我不知道)包含“网格”格式的数据,只需要对 x 列进行排序并添加空白行。

答案2

复制粘贴答案http://www.gnuplot.info/faq/faq.html#x1-320003.9

3.9 数据文件中的 Pm3d splot 不绘制任何内容

您确实设置了 pm3d;splot 'a.dat',没有绘图,但出现了颜色框。也许数据文件中两个后续扫描(等值线)之间没有空白行?添加空白行!如果您好奇这意味着什么,那么请毫不犹豫地查看 gnuplot 演示目录中的 demo/glass.dat 或 demo/triangle.dat 等文件。

您会发现以下 awk 脚本(例如,将其称为 addblanks.awk)很有用,只要第一列中的数字发生变化,它就会向数据文件中添加空行:

/^[[:blank:]]*#/ {next} # ignore comments (lines starting with #)  
NF < 3 {next} # ignore lines which don’t have at least 3 columns  
$1 != prev {printf ~\n~; prev=$1} # print blank line  
{print} # print the line

然后,通过命令 awk -f addblanks.awk 预处理数据文件,或者通过 gnuplot> splot ~ 在 unixish 平台下绘制数据文件

但是我的 awk 版本无法理解该代码。因此,我不得不将第三行替换为

$1 != prev {printf "\n"; prev=$1} # print blank line  

相关内容