Gnuplot:来自数据的围栏图

Gnuplot:来自数据的围栏图,gnuplot,fence-plots,Gnuplot,Fence Plots,我试图找出如何在gnuplot中绘制围栏图,但我很难理解在互联网上找到的示例中发生了什么 在我的模拟中,不同时间点的数据集(变化)数量在一个数据文件中,组织为一个值矩阵1: 我想为每个时间值绘制一个围栏。我可以简单地绘制splot'data.txt',然后得到与我想要的非常相似的东西-+标记沿着围栏的“顶部边缘”,时间在x轴上,x数据在y轴上,y数据在z轴上。但是,如果我在splot命令中添加类似于wlines的内容,我只会得到一个连接了所有数据序列的曲面 我试着改编了(大约一半)中的例子,但它

我试图找出如何在gnuplot中绘制围栏图,但我很难理解在互联网上找到的示例中发生了什么

在我的模拟中,不同时间点的数据集(变化)数量在一个数据文件中,组织为一个值矩阵1:

我想为每个时间值绘制一个围栏。我可以简单地绘制
splot'data.txt'
,然后得到与我想要的非常相似的东西-
+
标记沿着围栏的“顶部边缘”,时间在x轴上,x数据在y轴上,y数据在z轴上。但是,如果我在
splot
命令中添加类似于
wlines
的内容,我只会得到一个连接了所有数据序列的曲面

我试着改编了(大约一半)中的例子,但它们都依赖于一个虚拟变量,我不知道如何将它与我的数据系列结合起来。我还发现了一些其他的例子,但它们都非常详细,我根本不明白它们是做什么的

使用gnuplot从数据创建围栏图的好方法是什么



1如果有必要,可以对此进行更改-我控制生成数据的代码。这很麻烦,不过…

不幸的是,这确实需要对数据进行一些更改。不过,更改非常小,可能可以通过一个简单的
awk
1,2脚本来处理:

下面是我的交互式gnuplot会话的副本/粘贴:

gnuplot> !cat test.dat
1 2 3
1 2 0

1 3 4
1 3 0

1 4 5
1 4 0


2 2 3
2 2 0

2 3 4
2 3 0

2 4 5
2 4 0


3 2 3
3 2 0

3 3 4
3 3 0

3 4 5
3 4 0
!
gnuplot> splot 'test.dat' u 1:2:3 w lines
这里需要注意的是,在“fences”之间有两个空行,每个x,y数据点出现两次,后面有一个空行。第二次出现时,z坐标为0

要使每个围栏具有不同的颜色,请执行以下操作:

gnuplot> splot for [i=0:3] 'test.dat' index i u 1:2:3 w lines
awk脚本甚至可以内联完成:

splot "< awk {...} datafile"
splot“
但是,在引用时可能会有点棘手(要在单引号字符串中包含单引号,需要将其加倍)

AWKCMD='awk'{if(!NF){print'}else if(index($0,“#”)=1{printf”%s%s%s\n%s%s 0\n\n“,$1,$2,$3,$1,$2}”

不幸的是,这确实需要对数据进行一些更改。不过,更改非常小,可能可以通过一个简单的
awk
1,2脚本来处理:

下面是我的交互式gnuplot会话的副本/粘贴:

gnuplot> !cat test.dat
1 2 3
1 2 0

1 3 4
1 3 0

1 4 5
1 4 0


2 2 3
2 2 0

2 3 4
2 3 0

2 4 5
2 4 0


3 2 3
3 2 0

3 3 4
3 3 0

3 4 5
3 4 0
!
gnuplot> splot 'test.dat' u 1:2:3 w lines
这里需要注意的是,在“fences”之间有两个空行,每个x,y数据点出现两次,后面有一个空行。第二次出现时,z坐标为0

要使每个围栏具有不同的颜色,请执行以下操作:

gnuplot> splot for [i=0:3] 'test.dat' index i u 1:2:3 w lines
awk脚本甚至可以内联完成:

splot "< awk {...} datafile"
splot“
但是,在引用时可能会有点棘手(要在单引号字符串中包含单引号,需要将其加倍)

AWKCMD='awk'{if(!NF){print'}else if(index($0,“#”)=1{printf”%s%s%s\n%s%s 0\n\n“,$1,$2,$3,$1,$2}”

splot'
某物
——我需要记住那个…@mgilson:如果你知道它是上标的缩写,那么很容易记住。你能猜出什么东西能做什么吗<代码>某物
——我需要记住那个…@mgilson:如果你知道它是上标的缩写,那么很容易记住。你能猜出什么东西能做什么吗谢谢几个后续问题:1)我以前从未使用过
awk
。如何修改此选项以忽略所有以
#
开头的行?我用它在我的数据文件中打印诊断输出(一些关于运行的信息,供将来参考),我希望保持原样。2) 这个表演重吗?一个数据文件通常包含约10^5-10^6行数据。3) 如果我没有弄错的话,可以直接在gnuplot脚本中执行此操作,而不需要两个单独的步骤。我该怎么做?再次感谢!明亮的就像那样,它给了我美丽!我将不得不在透明度等方面做一些调整,以使它变得更好,但那是另一回事。谢谢!另外,我应该补充一点:我测试的数据文件有10000行,它以毫秒为单位运行(不足以让我注意到延迟)。大数据文件对于这种方法没有问题——至少对于do-it-inside gnuplot版本没有问题。再次感谢!谢谢几个后续问题:1)我以前从未使用过
awk
。如何修改此选项以忽略所有以
#
开头的行?我用它在我的数据文件中打印诊断输出(一些关于运行的信息,供将来参考),我希望保持原样。2) 这个表演重吗?一个数据文件通常包含约10^5-10^6行数据。3) 如果我没有弄错的话,可以直接在gnuplot脚本中执行此操作,而不需要两个单独的步骤。我该怎么做?再次感谢!明亮的就像那样,它给了我美丽!我将不得不在透明度等方面做一些调整,以使它变得更好,但那是另一回事。谢谢!另外,我应该补充一点:我测试的数据文件有10000行,它以毫秒为单位运行(不足以让我注意到延迟)。大数据文件对于这种方法没有问题——至少对于do-it-inside gnuplot版本没有问题。再次感谢!