我有两个不同的文件要在gnuplot中绘制。他们使用a)不同的分隔符b)x轴上的不同时间
因此,他们每个人分别绘制我需要传递
set datafile separator
set timefmt
我想将这两个数据强制/叠加在一个图表中,以便它们与时间对齐
我怎么能这样做?
答案 0 :(得分:2)
使用 using modifier 之后的格式可以解决不同分隔符的问题,为每个文件指定不同的分隔符,例如:
plot 'file1.dat' u 1:2 '%lf,%lf'
使用逗号分隔符绘制两列文件。有关详细信息,请参阅help \ using。
我不是时间格式的专家,所以我不知道如何处理时间戳格式问题。但也许你可以使用像strftime()
这样的函数。我从来没有尝试过,但在我看来它能满足你的需求。
答案 1 :(得分:0)
您是对的,每个文件需要传递set datafile separator
和set timefmt
一次。你可以这样做:
set terminal <whatever>
set output <whatever.wht>
set xdata time # tell gnuplot to parse x data as time
set format x '%F' # time format to display on plot x axis
set datafile separator ' ' # separator 1
set timefmt '%F' # time format 1
plot 'file1'
set datafile separator ',' # separator 2
set timefmt '%s' # time format 2
replot 'file2'
replot
命令本身会重新映射上一行,如果你指定另一行要绘制,那么就像我在这里一样,它将在第一行之上。
答案 2 :(得分:0)
在我看来,你有两个选择。第一种是选择数据文件格式并将这两种数据文件分成这种格式,可能使用awk
:
plot '<awk "-f;" "{print $1,$2}" data1' using 1:2 w lines,\
'data2' using 1:2 w lines
*注意,你的awk命令几乎肯定会有所不同,这只是展示了如何在内联管道中使用awk
。
您的第二个选择是使用multiplot
显式轴对齐:
set multiplot
set xdata time
set datafile sep ';' #separator for first file
set timefmt "..." #time format for first file
set lmargin at screen 0.9
set rmargin at screen 0.1
set tmargin at screen 0.9
set bmargin at screen 0.1
unset key
plot 'data1' u 1:2 w lines ls 1 nontitle
set key #The second plot command needs to add both "titles" to the legend/key.
set datafile sep ',' #separator for second file
set timefmt "..." #time format for second file
unset border
unset xtics
unset ytics
#unset other stuff that you set to prevent it from being plotted twice.
plot NaN w lines ls 1 title "title-for-plot-1", \
'data1' u 1:2 w lines ls 2 title "title-for-plot-2"
只有在想要在图例中正确显示内容时才需要使用情节NaN
技巧。如果你没有使用传奇,你不用担心它。
答案 3 :(得分:0)
这对我有用:
reset
set term pngcairo
set output 'wall.png'
set xlabel "Length (meter)"
set ylabel "error (meter)"
set style line 1 lt 1 linecolor rgb "yellow" lw 10 pt 1
set style line 2 lt 1 linecolor rgb "green" lw 10 pt 1
set style line 3 lt 1 linecolor rgb "blue" lw 10 pt 1
set datafile separator ","
set key
set auto x
set xtics 1, 2, 9
set yrange [2:7]
set grid
set label "(Disabled)" at -.8, 1.8
plot "file1.csv" using 1:2 ls 1 title "one" with lines ,\
"file2.csv" using 1:2 ls 2 title "two" with lines ,\
"file3.csv" using 1:2 ls 3 title "three" with lines
set output