为多维数据绘制缺少数据点的线
Plotting lines with missing datapoints for multidimensional data
我正在尝试从记录多个 GPU 数据的数据集中绘制多条线来表示 GPU 随时间的使用情况。每行包含时间戳、GPU 索引和使用百分比。
我的数据集如下所示:
$猫gpu.txt
#time #index # usage (%)
1,1,10
1,2,5
2,1,20
2,2,10
3,1,40
3,2,30
这是我的 gnuplot 脚本:
$猫plot.gplot
set datafile separator ","
set autoscale # scale axes automatically
unset log # remove any log-scaling
unset label # remove any previous labels
set xtic auto # set xtics automatically
set ytic auto # set ytics automatically
set title
set term png
set title "GPU usage"
set xlabel "Time"
set ylabel "Usage"
set output "gpu.png"
plot "gpu.txt" using ( == 1 ? : NaN):( == 1 ? : NaN) title 'GPU1' with linespoints ls 10 linecolor rgb "blue", \
"gpu.txt" using ( == 2 ? : NaN):( == 2 ? : NaN) title 'GPU 2' with linespoints ls 10 linecolor rgb "red", \
不幸的是,这只会绘制奇异数据点,而不会绘制线条。我认为这是因为“缺少”数据点 - 这显然不是这种情况,因为我有自定义过滤器来绘制每个 GPU 索引的使用数据。我试图通过 NaN 值将此指示给 gnuplot,但它似乎不起作用。
示例输出:
这是一个反复出现的过滤数据问题。
您可以定义线型,然后通过 ls i
在绘图循环中使用它。
如果您想要连接线,则必不可少的是线:set datafile missing NaN
。
我的最低建议是:
代码:
### filtering data
reset session
$Data <<EOD
#time #index # usage (%)
1,1,10
1,2,5
2,1,20
2,2,10
3,1,40
3,2,30
EOD
set datafile separator ","
set title "GPU usage"
set xlabel "Time"
set ylabel "Usage"
set key top left
set datafile missing NaN
myFilter(datacol,filtercol,value) = value==column(filtercol) ? column(datacol) : NaN
plot for [i=1:2] $Data u (myFilter(1,2,i)):3 w lp pt 7 title sprintf('GPU%d',i)
### end of code
结果:
我正在尝试从记录多个 GPU 数据的数据集中绘制多条线来表示 GPU 随时间的使用情况。每行包含时间戳、GPU 索引和使用百分比。
我的数据集如下所示:
$猫gpu.txt
#time #index # usage (%)
1,1,10
1,2,5
2,1,20
2,2,10
3,1,40
3,2,30
这是我的 gnuplot 脚本:
$猫plot.gplot
set datafile separator ","
set autoscale # scale axes automatically
unset log # remove any log-scaling
unset label # remove any previous labels
set xtic auto # set xtics automatically
set ytic auto # set ytics automatically
set title
set term png
set title "GPU usage"
set xlabel "Time"
set ylabel "Usage"
set output "gpu.png"
plot "gpu.txt" using ( == 1 ? : NaN):( == 1 ? : NaN) title 'GPU1' with linespoints ls 10 linecolor rgb "blue", \
"gpu.txt" using ( == 2 ? : NaN):( == 2 ? : NaN) title 'GPU 2' with linespoints ls 10 linecolor rgb "red", \
不幸的是,这只会绘制奇异数据点,而不会绘制线条。我认为这是因为“缺少”数据点 - 这显然不是这种情况,因为我有自定义过滤器来绘制每个 GPU 索引的使用数据。我试图通过 NaN 值将此指示给 gnuplot,但它似乎不起作用。
示例输出:
这是一个反复出现的过滤数据问题。
您可以定义线型,然后通过 ls i
在绘图循环中使用它。
如果您想要连接线,则必不可少的是线:set datafile missing NaN
。
我的最低建议是:
代码:
### filtering data
reset session
$Data <<EOD
#time #index # usage (%)
1,1,10
1,2,5
2,1,20
2,2,10
3,1,40
3,2,30
EOD
set datafile separator ","
set title "GPU usage"
set xlabel "Time"
set ylabel "Usage"
set key top left
set datafile missing NaN
myFilter(datacol,filtercol,value) = value==column(filtercol) ? column(datacol) : NaN
plot for [i=1:2] $Data u (myFilter(1,2,i)):3 w lp pt 7 title sprintf('GPU%d',i)
### end of code
结果: