GnuPlot:按第一个值的多个图
我刚接触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
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