Matrix 如何在gnuplot中按行打印

Matrix 如何在gnuplot中按行打印,matrix,gnuplot,rows,Matrix,Gnuplot,Rows,我有一个这种格式的文件 0 R1 R2 R3 R4 w1 I1 I2 I3 I4 w2 I1 I2 I3 I4 w3 I1 I2 I3 I4 在许多波长w中,半径R和强度I的值。我想在2D中绘制x轴的第1行(半径)和y轴的第3行(选择w2) 如何绘制每行?非每列这可能不是最优雅的解决方案,但您可以先过滤两行(包含x值的标题和对应于感兴趣波长的行),并排打印,最后使用Gnuplot绘制此辅助数据 为此,策略是在目录中创建一个名为filter.awk的脚本,您希望

我有一个这种格式的文件

0   R1  R2  R3  R4
w1  I1  I2  I3  I4
w2  I1  I2  I3  I4
w3  I1  I2  I3  I4
在许多波长w中,半径R和强度I的值。我想在2D中绘制x轴的第1行(半径)和y轴的第3行(选择w2)


如何绘制每行?非每列

这可能不是最优雅的解决方案,但您可以先过滤两行(包含x值的标题和对应于感兴趣波长的行),并排打印,最后使用Gnuplot绘制此辅助数据

为此,策略是在目录中创建一个名为filter.awk的脚本,您希望从该目录执行Gnuplot,其中包含以下内容:

NR==1{
    N = NF-1;
    for(i=1;i<=N;i++) x[i] = $(i+1);
    next;
}

$1==w{
    printf "#%f\n", $1;
    for(i=1;i<=N;i++) print x[i], $(i+1);
    printf "\n";
}
其中,
data.dat
将是您的输入数据,
100
的值表示应该过滤的波长

要概括这一点,例如,可以:

cmd(w)=sprintf('<gawk -v w=%f -f filter.awk test.dat', w);

plot for [w in "100 200"] cmd(w+0) w l t sprintf('wave length of %.1f', w+0)

cmd(w)=sprintf(“这可能不是最优雅的解决方案,但您可以先过滤两行(包含x值的标题和对应于感兴趣波长的行),并排打印它们,最后使用Gnuplot绘制此辅助数据

为此,策略是在目录中创建一个名为
filter.awk的脚本,您希望从该目录执行Gnuplot,其中包含以下内容:

NR==1{
    N = NF-1;
    for(i=1;i<=N;i++) x[i] = $(i+1);
    next;
}

$1==w{
    printf "#%f\n", $1;
    for(i=1;i<=N;i++) print x[i], $(i+1);
    printf "\n";
}
其中,
data.dat
将是您的输入数据,
100
的值表示应该过滤的波长

要概括这一点,例如,可以:

cmd(w)=sprintf('<gawk -v w=%f -f filter.awk test.dat', w);

plot for [w in "100 200"] cmd(w+0) w l t sprintf('wave length of %.1f', w+0)

cmd(w)=sprintf(“一个解决方案是使用正确的格式(列中的数据)创建一个新文件。
首先创建一个函数来读取文件中的数据(请参阅主题“将数据集值读入gnuplot变量(X系列的开始)”):

因此,构建新文件并打印它:

do for [j=1:5] { # 5 = number of your columns

x = at(file,1,j) # x axis in your example
y = at(file,3,j) # y axis
set print "newFile.txt" append 
print x," ",y
set print
}

plot "newFile.txt"

每次执行此过程时,请确保删除
newFile.txt

一个解决方案是使用正确的格式(数据列中)创建一个新文件。 首先创建一个函数来读取文件中的数据(请参阅主题“将数据集值读入gnuplot变量(X系列的开始)”):

因此,构建新文件并打印它:

do for [j=1:5] { # 5 = number of your columns

x = at(file,1,j) # x axis in your example
y = at(file,3,j) # y axis
set print "newFile.txt" append 
print x," ",y
set print
}

plot "newFile.txt"
每次执行此过程时,请确保删除
newFile.txt