如何扩展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
相关产品推荐
相关产品推荐

