GnuPlot:按第一个值的多个图

GnuPlot:按第一个值的多个图,gnuplot,Gnuplot,我刚接触GnuPlot,觉得有点困惑。我有这样的数据: sensor1 timestamp temperature sensor1 timestamp temperature sensor1 timestamp temperature sensor2 timestamp temperature sensor2 timestamp temperature sensor2 timestamp temperature sensor3 timestamp temperatur

我刚接触GnuPlot,觉得有点困惑。我有这样的数据:

sensor1 timestamp   temperature
sensor1 timestamp   temperature
sensor1 timestamp   temperature
sensor2 timestamp   temperature
sensor2 timestamp   temperature
sensor2 timestamp   temperature
sensor3 timestamp   temperature
sensor3 timestamp   temperature
我只对一个产生预期结果的传感器使用以下内容

使用2:($3/100.0):1和行绘制“sensors.txt”


我想用第一个值作为图的标题为每个传感器绘制一个图。这听起来不像是一个复杂的问题,但除了将每个传感器的数据分割成一个文件外,我无法解决它。有更优雅的解决方案吗?

解决方案是通过三元运算符按关键字进行过滤(请参见
帮助三元

您没有显示示例数据,所以我假设了一些情况

代码:

### split data by keyword for each plot
reset session

$Data <<EOD
sensor1  2020-06-21 12:00  24.3
sensor1  2020-06-21 13:00  25.3
sensor1  2020-06-21 14:00  22.3
sensor2  2020-06-21 15:00  23.3
sensor2  2020-06-21 16:00  22.3
sensor2  2020-06-21 17:00  21.3
sensor3  2020-06-21 18:00  25.3
sensor3  2020-06-21 19:00  23.3
sensor3  2020-06-21 20:00  27.3
EOD

myTimeFmt = "%Y-%m-%d %H-%M"
myFilter(fcol,key,dcol) = strcol(fcol) eq key ? column(dcol) : NaN
set datafile missing NaN
set format x "%Y\n%m-%d\n%H:%M" time
set xtics font ",8"
set ytics 1

set multiplot layout 3,1
    do for [i=1:3] {
        myKey = sprintf("sensor%d",i)
        set title myKey
        plot $Data u (timecolumn(2,myTimeFmt)):(myFilter(1,myKey,4)) w lp pt 7 lc i title myKey
    }
unset multiplot
### end of code
###按每个绘图的关键字分割数据
重置会话

$Data解决方案是通过三元运算符按关键字过滤(请参见
帮助三元

您没有显示示例数据,所以我假设了一些情况

代码:

### split data by keyword for each plot
reset session

$Data <<EOD
sensor1  2020-06-21 12:00  24.3
sensor1  2020-06-21 13:00  25.3
sensor1  2020-06-21 14:00  22.3
sensor2  2020-06-21 15:00  23.3
sensor2  2020-06-21 16:00  22.3
sensor2  2020-06-21 17:00  21.3
sensor3  2020-06-21 18:00  25.3
sensor3  2020-06-21 19:00  23.3
sensor3  2020-06-21 20:00  27.3
EOD

myTimeFmt = "%Y-%m-%d %H-%M"
myFilter(fcol,key,dcol) = strcol(fcol) eq key ? column(dcol) : NaN
set datafile missing NaN
set format x "%Y\n%m-%d\n%H:%M" time
set xtics font ",8"
set ytics 1

set multiplot layout 3,1
    do for [i=1:3] {
        myKey = sprintf("sensor%d",i)
        set title myKey
        plot $Data u (timecolumn(2,myTimeFmt)):(myFilter(1,myKey,4)) w lp pt 7 lc i title myKey
    }
unset multiplot
### end of code
###按每个绘图的关键字分割数据
重置会话
$Data