【问题标题】:Gnuplot: How to default to '0' when data is missing from a date sequenceGnuplot:当日期序列中缺少数据时如何默认为“0”
【发布时间】:2013-08-28 20:31:22
【问题描述】:

我有一堆数据,基本上是日期+时间,我想用 gnuplot 绘制一个数字。问题是数据是从数据库中提取的,所以当一天中的某些时间活动为零时,没有创建任何行,所以我提供给 gnuplot 的“csv”文件在序列中有间隙。

绘图配置:

set term jpeg medium size 800,600
set output "yesterday.jpg"
set datafile separator ":"
set title "Yesterday's Uploads"
set xlabel "Hour of day (Eastern)" offset 0,-2
set ylabel "Items per minute"
unset key
set bmargin 10
set xdata time
set timefmt "%m/%d/%Y-%H-%M"
set xtics rotate
set style fill solid 0.5
plot "yesterday.stats" u 1:2 w boxes

示例数据:

08/27/2013-23-00:34
08/27/2013-22-59:20
08/27/2013-22-58:79
08/27/2013-22-53:6
08/27/2013-22-52:24
08/27/2013-22-51:15
08/27/2013-22-50:12
08/27/2013-22-42:1
08/27/2013-22-38:58
08/27/2013-22-37:36

注意缺少的分钟(例如从 38 到 42,以及从 42 到 50),其中没有活动,因此没有 DB 条目,因此在我的绘图输入文件中没有信息。

当我尝试使用上面的配置示例进行绘制时,“间隙”显示为水平填充条,即缺失数据的宽度。

我希望丢失的数据只是一个“零”,图表上没有显示任何活动。我认为在 gnuplot 中必须有一种方法来处理这个问题,并且想在我编写一些脚本将虚拟条目插入到我的数据中之前与大家核实一下。

有什么建议吗?除了不“连接”数据点的框之外,也许还有一种不同类型的图,从而导致那些奇怪的水平区域?

【问题讨论】:

标签: gnuplot missing-data


【解决方案1】:

可以通过using的第三个参数指定一个框的宽度:

plot "yesterday.stats" u 1:2:(50) w boxes

【讨论】:

    【解决方案2】:

    我使用这个小脚本将零显式添加到我的(带有数字时间戳的)数据中:https://chkno.net/fill-in

    gnuplot 可以使用

    plot "< fill-in 60 0 yesterday.stats"
    

    (设置框宽度适用于“带框”,但添加零允许您使用任何样式。)

    【讨论】:

    • 您能否更具体一点,您需要明确填写数据文件以正确绘制哪种样式?不知道这是否值得一个自己的问题。
    猜你喜欢
    • 2012-05-10
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 2014-03-27
    • 1970-01-01
    相关资源
    最近更新 更多