两个数据集的绘图分为两种不同的方式

kxk*_*607 8 gnuplot

我需要从.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)

以上不起作用,我尝试了上述代码的许多不同变体....我没有运气.

Kar*_*arl 7

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 数字作为输入,因此您必须使用%leor%lf说明符。

检查help using examples这里是格式的完整描述。


mgi*_*son 3

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)