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?