【问题标题】:Plot day events from date and value in Gnuplot在 Gnuplot 中根据日期和值绘制日事件
【发布时间】:2011-07-03 13:49:43
【问题描述】:

我有这种格式的数据:

2011-06-22 22:33:19  23  15
2011-06-23 09:46:13  12  79
2011-06-24 12:31:09  31  4
2011-06-24 17:34:10  7   2
2011-06-25 16:42:43  44  14
2011-06-25 20:26:52  54  9
2011-06-26 19:34:29  217 28

如何使用 Gnuplot 创建日常活动的直方图?默认情况下,使用以下设置:

set xdata time
set timefmt "%Y-%m-%d %H:%M:%S"
set style data boxes
set grid
plot 'data' using 1:3 t "ins", \
     'data' using 1:4 t 'dels' 

这些盒子将彼此相邻。但我想将平淡无奇的日子留为 0。就像 StackOverflow 中的信誉图的行为一样。如果在某一天没有任何内容,它应该在图表中留下一个空白位置。如果一天有一个事件,则该框应该是一天的最大宽度。如果一天有超过一天,它们都应该适合该宽度。

设置 boxwidth 很棘手,因为任何值似乎都会给我 1 像素宽的“框”。

非常感谢。

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

    如果我对您的理解正确,那么据我所知,您尝试做的是 gnuplot 无法做到的。或者至少不是以一种简单的方式。这就是我认为你会遇到困难的原因:

    您不能在单个图中绘制不同的框宽度。因此,尝试在“非多事”的日子里不画任何框,而在有一个事件的日子里画一列就可以了。在同一图中发生多个事件的一天绘制多列将失败,因为:

    1. 您不能在同一个图中设置不同的框尺寸
    2. 您需要根据事件的数量来抵消当天的箱子

    有一些方法可以解决这个问题,例如,将两个相同颜色的盒子并排绘制,以在某一天“模拟”一个盒子,然后在有两个事件的日子利用较小的盒子宽度。但这很快就会变得非常多毛且难以维护。
    也许您想考虑使用不同的情节风格?看看像here 这样的直方图。也许其中一种样式更适合您的数据。或者您可以考虑将您的情节分成多个情节?

    【讨论】:

    • 如果不是boxes风格也可以。如果直方图可以装箱,那我就可以了。去试试……
    • 所以histogram 也不会帮助我吗? :F 让空旷的日子空荡荡的想法是很容易看到什么时候有更长的停顿。
    • 您可以使用set xtics 为空闲的日子留出空间。对于您的时间格式,您还需要阅读this。另一个问题,一天有多个盒子:我仍然认为你需要找到另一种方法来绘制这个。
    • 好吧:确切地说,信誉图也不会每天绘制多个框。问题会变成:如何将一天的多个条目收集并组合为一个?可能应该单独问这个/在这里找到答案。
    • 在 gnuplot 中收集和组合多个条目并不容易。你需要走awk的道路。 Here 是您可以做的几个例子。当然,使用 awk 可以做的事情几乎没有限制。问题是,在 gnuplot 中使用数据之前预处理数据可能更容易。
    猜你喜欢
    • 2014-09-12
    • 2021-12-17
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    相关资源
    最近更新 更多