我的任务是绘制一个显然厌恶新行/列的人生成的一些数据。
我有一个文件格式如下:
I0,X0,Y0,I1,X1,Y2,I2,X2,Y2,I3,X3,Y3,...中,XN,YN
我需要绘制i与y的关系。
我遇到过"每一个"命令,但似乎是用于跳过包含列的数据中的行。
我在Windows 7上运行gnuplot 4.6。这只能在gnuplot中完成吗?如果不是,插入新行字符的最佳方法是什么。我可以跳上一个Linux机器但是这样做但它没有gnuplot可用。无论哪种方式,我更喜欢一个自包含的plt文件,因为这将再次出现。
答案 0 :(得分:1)
是的,您可以绘制这些数据,但这需要一些技巧,因为gnuplot通常会逐行读取数据。
您必须使用matrix
读取数据,保存每第三列的值,从第0列开始,然后在读入y值时将此保存的值用作x值(列号为模数) 3 == 2):
set datafile separator ','
x = 0
plot 'test.dat' matrix using (int($1) % 3 == 0 ? x = $3 : x = x, (int($1) % 3 == 2 ? x : 1/0)):(int($1) % 3 == 2 ? $3 : 1/0) w lp ps 2 pt 7
使用测试数据
0.1,2,3,0.2,5,6,0.4,8,9,0.8,11,12,1.6,14,15,3.2,17,18
我得到了情节
请注意,您只能使用gnuplot 5.0版获得一个折线图。使用4.6时,1/0
会导致线条被中断,而您只能看到点。
对于以前的版本,您必须首先将数据绘制到中间文件,然后使用传统的绘图命令再次绘制:
set datafile separator ','
x = 0
set table 'test.tab'
plot 'test.dat' matrix using (int($1) % 3 == 0 ? x = $3 : x = x, (int($1) % 3 == 2 ? x : 1/0)):(int($1) % 3 == 2 ? $3 : 1/0) w lp ps 2 pt 7
unset table
set datafile separator white
plot 'test.tab' using 1:2 every 3::2 w lp ps 2 pt 7