我很难弄清楚如何使用gnuplot。我正在尝试制作随时间变化的带宽图。我有一个脚本,可将我的乐队,时间和日期每分钟保存到一个log.txt文件中 示例:
47.05
18:59:40
12/27/18
47.02
19:01:02
12/27/18
47.04
19:02:25
12/27/18
46.12
19:03:47
12/27/18
46.19
19:05:08
12/27/18
我想使用该log.txt文件制作图形。 在x轴上,我想要时间,在y轴上,我想要以Mbps为单位的带宽。
我尝试了一些尝试,但是我错过了完成该任务的信息/知识。
示例:
1 #!/usr/bin/gnuplot
2 reset
3
4 set xdata time
5 set timefmt "%Y-%m-%dT%H:%M:%S"
6 set format x "%T"
7
8 set xlabel "Tijd"
9 set ylabel "Bandbreedte"
10
11 set title "Een grafiek van de bandbreedte in functie van de tijd"
12
13 plot "/home/student/log.txt" using 1:2
有人可以帮我吗?
答案 0 :(得分:1)
就像@Kamil Cuk所建议的那样,最好使用其他格式的数据。您可能想要更改记录程序的输出(如果可以)或使用其他工具重新格式化数据。
但是,您也可以使用一些(有点奇怪的)解决方法来用gnuplot重新格式化数据。 使用gnuplot可以更轻松地处理如下所示的格式。
12/27/18 18:59:40 47.05
12/27/18 19:01:02 47.02
重新格式化下面的脚本是这样的,然后您就可以轻松地绘制它。
### reformat some logging data
reset session
$Data <<EOD
47.05
18:59:40
12/27/18
47.02
19:01:02
12/27/18
47.04
19:02:25
12/27/18
46.12
19:03:47
12/27/18
46.19
19:05:08
12/27/18
EOD
# reformat your input data
a = b = c = NaN
set table $Data2
plot $Data u (c=b,b=a,a=stringcolumn(1),a):(b):(c) with table
unset table
set table $Data3
plot $Data2 u (stringcolumn(1).' '.stringcolumn(2)):3 every 3::2 with table
unset table
set xdata time
set xtics rotate
set format x "%H:%M"
set timefmt "%m/%d/%y %H:%M:%S"
plot $Data3 u 1:3 w lp lt 7 lc rgb "red"
### end of code
这将导致:
答案 1 :(得分:1)