gnuplot:如何使用splot绘制断开连接的线?

gnuplot:如何使用splot绘制断开连接的线?,gnuplot,Gnuplot,这不是一个复制品。 问题略有不同,但我也希望使用splot来splot断开的行。上面的链接表示您必须在数据中引入两行空行。这就是我在创建$Data1时所做的 问题:为什么$Data1已连接,但$Data2已断开?我想让$Data1也断开连接。发生了什么?有什么想法吗?Bug还是特性 编辑: @伊森的回答基本上导致了线路断开。但仍然存在一些不一致之处。当您创建一个数据文件Data3.dat时,如果您只打印一个\n来创建它似乎就足够了,但在文件中您会看到两个\n。为什么?我很困惑 代码: 绘图: 在

这不是一个复制品。 问题略有不同,但我也希望使用
splot
来splot断开的行。上面的链接表示您必须在数据中引入两行空行。这就是我在创建
$Data1
时所做的

问题:为什么
$Data1
已连接,但
$Data2
已断开?我想让
$Data1
也断开连接。发生了什么?有什么想法吗?Bug还是特性

编辑:

@伊森的回答基本上导致了线路断开。但仍然存在一些不一致之处。当您创建一个数据文件
Data3.dat
时,如果您只打印一个
\n
来创建它似乎就足够了,但在文件中您会看到两个
\n
。为什么?我很困惑

代码:

绘图:


在$data1中的数据块之间只创建一个空行,而不是两个

set print $Data1
do for [i=1:3] {
    print sprintf("%.3f %.3f %.3f",rand(0),rand(0),rand(0))
    print sprintf("%.3f %.3f %.3f",rand(0),rand(0),rand(0))
    print "\n"
    print "\n"   # 2 blank lines required
}
set print
版本5.2.6

gnuplot> set print $D; print ""
gnuplot> set print $E; print "\n"
gnuplot> set print $F; print "\n\n"
gnuplot> set print $G; print "\n\nX"
gnuplot> show var $

        Variables beginning with $:
        $D = <1 line data block>
        $E = <1 line data block>
        $F = <1 line data block>
        $G = <1 line data block>
gnuplot>设置打印$D;打印“”
gnuplot>设置打印$E;打印“\n”
gnuplot>设置打印$F;打印“\n\n”
gnuplot>设置打印$G;打印“\n\nX”
gnuplot>showvar$
以$开头的变量:
$D=
$E=
$F=
$G=
版本5.3

gnuplot> set print $D; print ""
gnuplot> set print $E; print "\n"
gnuplot> set print $F; print "\n\n"
gnuplot> set print $G; print "\n\nX"
gnuplot> show var $

        Variables beginning with $:
        $D = <1 line data block>
        $E = <1 line data block>
        $F = <2 line data block>
        $G = <3 line data block>
gnuplot>设置打印$D;打印“”
gnuplot>设置打印$E;打印“\n”
gnuplot>设置打印$F;打印“\n\n”
gnuplot>设置打印$G;打印“\n\nX”
gnuplot>showvar$
以$开头的变量:
$D=
$E=
$F=
$G=

问题实际上不是关于
splot
,而是: 我可以得到多少空白行?

总结一下我从@Ethan的评论和回答中理解的内容

一些测试代码:

### How many empty lines do I get?
reset session

set print $Data1; print "1 Dataline"; print "";      print "2 Dataline";
set print $Data2; print "1 Dataline"; print "\n";    print "2 Dataline";
set print $Data3; print "1 Dataline"; print "\n\n";  print "2 Dataline";
set print $Data4; print "1 Dataline"; print "\n\nX"; print "2 Dataline";

set print "Data1.txt"; print "1 Dataline"; print "";      print "2 Dataline";
set print "Data2.txt"; print "1 Dataline"; print "\n";    print "2 Dataline";
set print "Data3.txt"; print "1 Dataline"; print "\n\n";  print "2 Dataline";
set print "Data4.txt"; print "1 Dataline"; print "\n\nX"; print "2 Dataline";
set print    

print $Data1
print $Data2
print $Data3
print $Data4
### end of code
结果:

A = print to a datablock (how gnuplot handles the datablock)
B = print datablock to gnuplot console (how gnuplot displays the datablock)
C = print to datafile

Blank lines:
                  5.2          5.3
               A   B   C    A   B   C    
print ""       1   1   1    1   1?  1?
print "\n"     1   2   2    1   1?  1?
print "\n\n"   1   3   3    2   2?  2?
print "\n\nX"  1   2   2    2   2?  2?
我认为A、B、C列应该是相同的。好吧,它们不在5.2中(gnuplot内部行为与您看到的不同),这是我实际的“问题”。
因为我没有5.3,我不能测试B和C,所以这些列只是猜测,如果我错了,请更正它们。在我看来,它们应该与A列相同。

但是,如果我打印$Data1,为什么它会显示为两个?我也尝试了打印“\n\n”,但它仍然是连接的,尽管它显示了3个空行。实际上,
print”“;打印“”
有效。那么,区别是什么呢?在gnuplot开发版本中,打印到数据块的行为发生了变化。在版本5.2中,print“1\n2\n3\n”将整个字符串(包括嵌入的换行符)加载到数据块的单个条目中。在5.3版中,相同的print语句扩展了换行符,在数据块中创建了三个连续的条目。[续]您无法从视觉上区分“print”语句与“print”语句之间的差异,但在内部有一个差异。在这两种情况下,当从数据块打印时,程序将“空行”视为包含空字符串的数据块条目。因此,在5.2版
中,将“\n\n”
打印到数据块只会产生一个“空行”,但在5.3版中,in会产生两个“空行”。开发版本的行为不是一成不变的,因此如果您对此更改有任何意见,请发送给我们。感谢您的解释。如果
print“\n\n”
在一个数据块中生成两个空行,这就是我所期望的。所以,我对开发版本很满意。但是如果我打印到数据文件,同一个命令不应该创建一个、三个或四个,而是两个
\n
### How many empty lines do I get?
reset session

set print $Data1; print "1 Dataline"; print "";      print "2 Dataline";
set print $Data2; print "1 Dataline"; print "\n";    print "2 Dataline";
set print $Data3; print "1 Dataline"; print "\n\n";  print "2 Dataline";
set print $Data4; print "1 Dataline"; print "\n\nX"; print "2 Dataline";

set print "Data1.txt"; print "1 Dataline"; print "";      print "2 Dataline";
set print "Data2.txt"; print "1 Dataline"; print "\n";    print "2 Dataline";
set print "Data3.txt"; print "1 Dataline"; print "\n\n";  print "2 Dataline";
set print "Data4.txt"; print "1 Dataline"; print "\n\nX"; print "2 Dataline";
set print    

print $Data1
print $Data2
print $Data3
print $Data4
### end of code
A = print to a datablock (how gnuplot handles the datablock)
B = print datablock to gnuplot console (how gnuplot displays the datablock)
C = print to datafile

Blank lines:
                  5.2          5.3
               A   B   C    A   B   C    
print ""       1   1   1    1   1?  1?
print "\n"     1   2   2    1   1?  1?
print "\n\n"   1   3   3    2   2?  2?
print "\n\nX"  1   2   2    2   2?  2?