You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何扩展gnuplot fillsteps图表X轴范围至正负无穷并补全数据

扩展Gnuplot累积填充图的首尾数据以符合水位逻辑

我看到你用Gnuplot生成的累积填充图不符合容器水位的实际逻辑——初始时段没数据的地方应该保持0,结束后要停在最后一个水位值。其实解决方法很简单,只需要给输入数据手动加两个首尾点就行。

先回顾下你原来的代码:

set terminal dumb size 60, 20
set xrange [2008:2016]
set yrange [-2:16]
plot '-' using 1:2 smooth cumulative with fillsteps
2010 4
2011 -2
2012 6
2013 4
2014 -3

生成的图表是这样的:

16 +----------------------------------------+
    | + + + + + + +                        |
 14 |-+ '-' using 1:2                     +-|
 12 |-+        ******                     +-|
    |            *     *                   |
 10 |-+          *     *                   +-|
  8 |-+        ******                     +-|
    |            *                         |
  6 |-+          *                         +-|
  4 |-+        ******       *             +-|
    |            *           *             |
  2 |-+        *******                     +-|
  0 |-+                                    +-|
    | + + + + + + +                        |
 -2 +----------------------------------------+
    2008 2009 2010 2011 2012 2013 2014 2015 2016

解决步骤

要达到你想要的效果,只需要在数据的首尾各加一个点:

  • 开头加2008 0:对应x轴起始年份,水位设为0,这样2008到2010年之间就会填充0的区域;
  • 结尾加2016 -3:对应x轴结束年份,水位用最后一个数据点的值(-3),这样2014到2016年就会保持这个水位不变。

修改后的完整代码:

set terminal dumb size 60, 20
set xrange [2008:2016]
set yrange [-2:16]
plot '-' using 1:2 smooth cumulative with fillsteps
2008 0  # 新增:起始年份水位为0
2010 4
2011 -2
2012 6
2013 4
2014 -3
2016 -3  # 新增:结束年份保持最后水位值

运行这段代码后,生成的图表就会和你期望的一致:

16 +----------------------------------------+
    | + + + + + + +                        |
 14 |-+ '-' using 1:2                     +-|
 12 |-+        ******                     +-|
    |            *     *                   |
 10 |-+          *     **********|
  8 |-+        ******                     +-|
    |            *                         |
  6 |-+          *                         +-|
  4 |-+        ******       *             +-|
    |            *           *             |
  2 |-+          *     *******             +-|
  0 |**********                            +-|
    | + + + + + + +                        |
 -2 +----------------------------------------+
    2008 2009 2010 2011 2012 2013 2014 2015 2016

这个思路的核心就是用额外的数据点把x轴的整个范围“填满”,让smooth cumulative和fillsteps能覆盖从2008到2016的全部区间,符合水位的实际变化逻辑。

内容的提问来源于stack exchange,提问作者adius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:17:52