我需要从.csv文件和空白分隔文件中绘制数据.两组数据都需要出现在同一个图上.
data1.dat
#t y
1 1
2 1
3 1
Run Code Online (Sandbox Code Playgroud)
和
data2.csv
#t,y
1,2
2,2
3,2
Run Code Online (Sandbox Code Playgroud)
通常,如果两者都是.csv集,我会做以下事情:
set datafile separator ','
plot 'data1.csv' using 1:2,'data2.csv' using 1:2
Run Code Online (Sandbox Code Playgroud)
有没有办法在plot语句中包含分隔字符的设置?
plot 'data1.dat' using 1:2,'data2.csv' using datafile separator ',' using 1:2
Run Code Online (Sandbox Code Playgroud)
以上不起作用,我尝试了上述代码的许多不同变体....我没有运气.
set datafile separator
根据您的情况,您可以指定多个字符", "
。然后所有这些都被单独处理为分隔符。(制表符可以表示为“\t”,那么您需要在字符串两边加上双引号!)
$dat << EOD
1 2,4
2 2,5
3 1,6
4 4,4
EOD
set xr [0.5:4.5]
set dataf sep ", "
plot $dat us 1:2:3 w yerrorbars
Run Code Online (Sandbox Code Playgroud)
请注意,每个显式分隔符都算作一个分隔符。"4, 4"
使用 set dataf sep "," 计算为“三列,第二个是缺失值。如果一个图中的格式不兼容,您可以使用 为每个子图导入数据并设置其自己的分隔符set table $<name>
。(检查“帮助数据块”)
如果您的数据文件的格式非常困难:gnuplotsusing
说明符接受 libCscanf()
格式字符串
plot "-" us 1:2 "%lf,%lf"
1,2
2,3
3,4
e
Run Code Online (Sandbox Code Playgroud)
您可以为命令中的每个文件指定不同的格式字符串plot
。请注意,gnuplot 只接受“双”fp 数字作为输入,因此您必须使用%le
or%lf
说明符。
检查help using examples
,这里是格式的完整描述。
AFAIK,没有办法指定分隔符。但是,如果您处于 POSIX 兼容环境中(并且您的 gnuplot 支持管道——大多数情况下都支持管道),您可以轻松地将工作分配给awk
:
plot 'data1.dat' using 1:2,\
"<awk -F, '{print $1,$2}' data2.csv" using 1:2
Run Code Online (Sandbox Code Playgroud)