我正在尝试绘制笔记本电脑的温度,这是我github
的工作文件我有时代,温度和温度内核标识符数据如下:
1357786501 72 3.6.11-1-ARCH
1357786801 72 3.6.11-1-ARCH
1357787101 60 3.0.57-1-lts
1357787401 54 3.0.57-1-lts
1357800301 52 3.0.57-1-lts
1357800601 48 3.6.11-1-ARCH
1357800902 45 3.6.11-1-ARCH
我最接近我想要的是(使用this):
set term svg size 1024,708
set xdata time
set key outside
set timefmt "%s"
set ytics 5
set format x "%d/%m"
plot "< awk '{if($3 == \"3.0.57-1-lts\") print}' temp.csv" u 1:2 t column(3) w p pt 2, \
"< awk '{if($3 == \"3.6.10-1-ARCH\") print}' temp.csv" u 1:2 t column(3) w p pt 2, \
"< awk '{if($3 == \"3.6.11-1-ARCH\") print}' temp.csv" u 1:2 t column(3) w p pt 2, \
"< awk '{if($3 == \"3.8.1-1-mainline-dirty\") print}' temp.csv" u 1:2 t column(3) w p pt 2
有没有办法避免使用awk?当我不使用这个awk时,它无法绘制不同的内核标识符。
我可以用不同颜色制作一条连续的线吗?
如何在没有宽度/高度的情况下制作SVG输出?任何让它看起来更好的技巧?
答案 0 :(得分:1)
如果你的Gnuplot版本足够新,你可以使用for循环和迭代器遍历你想要匹配的不同字符串,例如参见manual page 88-89或this blog entry。要忽略不匹配的行,您可以使用三元运算符(cond ? iftrue : iffalse
)将这些值设置为&#34; Not-A-Number&#34; (1/0
或NaN
):
set xdata time
set key outside
set timefmt '%s'
set ytics 5
set format x '%d/%m'
set style data linespoints
archs = "`cut -d' ' -f3 temp.csv | sort -u | tr '\n' ' '`"
plot for [arch in archs] 'temp.csv' using 1:((strcol(3) eq arch) ? $2:1/0) title arch