在gnuplot上绘制10行sof 1000值

时间:2018-12-22 12:59:52

标签: gnuplot

我有一个数据文件,其中有10行,每行有1000个值,我正在尝试使用此脚本绘制这些值

#!/usr/bin/gnuplot -persist

 plot "data.dat" using [1:1000] title "" with lines

但是我得到这个错误

plot "data.dat" using [1:1000] title "" with lines
                      ^
"./plot.sh", line 3: invalid expression 

如何将第一个值的间隔指定为1000值?无法为每行设置不同的随机值?

1 个答案:

答案 0 :(得分:1)

正如@vaettchen指出的那样,gnuplot希望将数据存储在列中,而绘制行则并不简单。因此,最好是如果您的数据已转置。不幸的是,gnuplot没有功能来转置数据。因此,您必须使用外部工具来转置数据。

尽管,如果您的数据是10行,每行有1000个值,即严格的10x1000矩阵,则您只能使用gnuplot进行操作(请参见下文)。 但是,如果您的数据不是严格的矩阵,例如一行包含更多或更少的值,或者缺少以下方法的一个值将不起作用。

以下示例(仅5行,每行7个值)说明了绘制列和绘制行。

### plotting columns and rows
reset session
set colorsequence classic

$Data <<EOD
11  12  13  14  15  16  17
21  22  23  24  25  26  27
31  32  33  34  35  36  37
41  42  43  44  45  46  47
51  52  53  54  55  56  57
EOD

# get the number of rows
stats $Data u 0 nooutput
RowCount = STATS_records

# do the plot
set multiplot layout 1,2
    set title "Plotting columns"
    set xlabel "Row no."
    set xtics 1
    # plot all columns from 1 to *(=autodetection)
    plot for [i=1:*] $Data u ($0+1):i w lp pt 7 not

    set title "Plotting rows"
    set xlabel "Column no."
    # plot all rows
    plot for [i=0:RowCount-1] $Data matrix u ($1+1):0 every :::i::i w lp pt 7 not
unset multiplot
### end of code

这将导致:

enter image description here