如何使用Gnuplot在一个绘图中绘制表示数据集中多个子集行的多个图表?
我有一个数据集,其名称为('output.txt'),格式如下:如何使用Gnuplot在一个绘图中绘制表示数据集中多个子集行的多个图表?,gnuplot,Gnuplot,我有一个数据集,其名称为('output.txt'),格式如下: 1 ...... 2 ...... 4 ..... 6 ...... 7 ..... 10 ...... 1 ...... 2 ...... 5 ..... 6 ...... 7 ..... 1 ...... 3 ...... 4 ..... 6 ...
1 ......
2 ......
4 .....
6 ......
7 .....
10 ......
1 ......
2 ......
5 .....
6 ......
7 .....
1 ......
3 ......
4 .....
6 ......
7 .....
10 ......
.
.
.
.
.
.
2 ......
4 .....
6 ......
7 .....
10 ......
我想在它自己的彩色图中绘制每一行子集(直到我达到x+1的值小于x的值),并在一个图中绘制所有的图。如何使用Gnuplot实现这一点?从您不完整的示例数据来看,每个块的x值似乎不相同,甚至每个块的x值也不相同。 如果它是常规的,例如每个块始终有6个值,您可以简单地使用
plot for
和every
,检查help plot for
和help every
。但这在你的情况下并不常见
为了用不同的颜色绘制每个“块”,您必须告诉gnuplot块的结束位置。通常这是通过一个或几个空行来完成的。
不幸的是,块之间没有空行,所以必须自己插入。通过外部工具或gnuplot本身(后者需要额外几行代码)。这里有必要将数据保存在数据块中。如何将文件放入其中,请参见()
第二种方法(如果要使用linespoints打印)是使用点打印两次,然后使用线打印第二次,当当前x值小于上一个值时,每次都会更改颜色。为了在块之间进行分割,颜色设置为不可见(myLineC=-2
)。
如果只需要直线,只需跳过带有点的绘图。
根据您的具体需要(颜色、钥匙等),可能需要进一步微调
代码:
### split data based on x-values
reset session
$Data <<EOD
1 0.11
2 0.12
4 0.13
6 0.14
7 0.15
10 0.16
1 0.21
2 0.22
5 0.23
6 0.24
7 0.25
1 0.31
3 0.32
4 0.33
6 0.34
7 0.35
10 0.36
2 0.41
4 0.42
6 0.43
7 0.44
10 0.45
EOD
# first approach by inserting empty lines
set title "Approach 1"
set print $DataSplit
x0=NaN
do for [i=1:|$Data|] {
x1 = real(word($Data[i],1))
if (x1<x0) { print "\n" }
x0 = x1
print $Data[i]
}
set print
plot $DataSplit u 1:2:(column(-1)+1) w lp pt 7 lc var notitle, \
pause -1 "Press Enter to continue"
# second approach by setting the color invisible to split
set title "Approach 2"
myColor = 1
x0=NaN
plot $Data u ((x0>$1 ? (myColor=myColor+1,myLineC=-2) : myLineC=myColor), x0=$1):2:(myLineC) w l lc var notitle, \
tmp=(x0=NaN, myColor=1) $Data u (($1<x0 ? myColor=myColor+1 : 0), x0=$1):2:(myColor) w p pt 7 lc var notitle
### end of code
###基于x值分割数据
重置会话
$Data您能澄清一下“数据报”这个词的用法吗?不清楚您的目标是什么样的图。*图(带线图),对不起,谢谢您通知我。点是什么?它们是数字吗?在此结构中,其中是x轴值,其中是您希望程序绘制的y轴值?是的,y是数字。我现在对y是什么不感兴趣,所以我隐藏了y数据来集中说明x不是正则的事实。我实现了一个网络模拟器,x值表示网络何时成为随机运行和停止。我做了一个实验,用不同的参数重复了很多次,然后把结果放在一个文件中。