1

我刚开始使用 gnuplot,但在使用“时间”作为 x 变量时遇到了问题。我已经尝试了很多事情,但我无法做到正确。我的数据看起来像

# 
10-05-2013 1-52-56, 425,"lvl"  
10-05-2013 1-52-57, 425,"lvl"  
10-05-2013 1-52-58, 433,"lvl"  
10-05-2013 1-52-59, 433,"lvl"  

我想将值(425 等)绘制为 y 并将日期/时间绘制为 x(此日期/时间示例使用以 1 开头的日期(例如上午 1 点)而不是 01 但同样的问题发生在时间为例如 19小时)。所以 1-52-56 表示 1 小时 52 分 56 秒。

这是我使用的脚本的一部分(数据集是“即时”构建的):


# maak een lege plot zodat je verderop replot kunt gebruiken
load "gnuvars.txt"
set xrange [0:1]
set yrange [0:1]
set xtics rotate
set xtics font "0,9"
#set terminal wxt size 1000,700
#set terminal windows size 1150,830
set terminal windows size 1150,500
set terminal windows position 1,1
plot 1/0 notitle 
# zet eerst een lege commentaarregel in ylsecout.txt
# in deze file komen de uiteindel te plotten waarden te staan
system ("echo # > d:\\curl\\ylsecout.txt")
# maak een loopje over een (nu nog van tevoren bepaald) aantal iteraties
do for [i=0:nr_its]{
    #
    #lees na een aantal seconden de youless 1x uit en zet dat in het bestand ylsec.txt
    system ("timeout /T 1")
    system ("d:\\curl\\curl -c d:\\curl\\cookie.txt 192.168.178.14/L?w=password") 
    system ("d:\\curl\\curl -b d:\\curl\\cookie.txt 192.168.178.14/a?f=j -s -S >  d:\\curl\\ylsec.txt")
    #system ("echo. \>\>d:\\curl\\ylsec.txt")
    #lees datum, tijd uit en maak een plotbare datafile ylsecout.txt
    system ("call d:\\curl\\maakplotdata")
    # en maak een replot
    set title 'Meetwaarden Youless versus tijd'
    #set xlabel 'Time/s'
    #set ylabel 'waarden'
    set grid xtics
    set autoscale
    set xdata time
    set timefmt "%d-%m-%Y %H-%M-%S"
    set datafile separator ","
    replot 'ylsecout.txt' using 1:2 notitle with lines lw 3 lt rgb "red"
}

我合并了整个代码,因为也许我事先写了一些东西弄乱了图表,但我认为问题出在:

set xdata time
set timefmt "%d-%m-%Y %H-%M-%S"

我得到的情节只使用包含分钟和秒的标签,而不是小时甚至日期。我做错了。有人可以看看它并告诉我我做错了吗?

谢谢!

4

1 回答 1

2

我得到的情节只使用包含分钟和秒的标签,而不是小时甚至日期。

xtic 标签的格式可以用 更改set format x '<format>',例如包括日期和小时使用:

set format x '%d/%m - %H:%M:%S'

这些将很长,也许您还希望为它们提供更好的空间:

set xtics rotate by -45

查看help time/date更多。

于 2013-05-10T10:25:23.983 回答