我有一个数据文件,其中有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值?无法为每行设置不同的随机值?
答案 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
这将导致: