扩展gnuplot fillsteps图表';s x范围从-无穷大到+;无穷
我有以下代码来生成图表:扩展gnuplot fillsteps图表';s x范围从-无穷大到+;无穷,gnuplot,Gnuplot,我有以下代码来生成图表: 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 +----------------------------------------+ | + + +
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
如果数据描述了容器的水位,这将是不完整的,因为之前的水位为0,之后的最终值为0。
因此,我正在寻找一种方法来相应地扩展图表。
结果将是:
16 +----------------------------------------+
| + + + + + + + |
14 |-+ '-' using 1:2 +-|
12 |-+ ****** +-|
| * * |
10 |-+ * **********|
8 |-+ ****** +-|
| * |
6 |-+ * +-|
4 |-+ ****** * +-|
| * * * |
2 |-+ * ******* +-|
0 |********** +-|
| + + + + + + + |
-2 +----------------------------------------+
2008 2009 2010 2011 2012 2013 2014 2015 2016
我找到了一个解决办法,尽管这是一个相当棘手的办法 诀窍是首先将图表呈现给虚拟终端,从而强制gnuplot计算“gnuplot定义的变量”。 然后,可以使用它们将丢失的数据追加到数据块中。 即使自动计算范围值,此操作也有效
$data << EOD
2010 4
2011 -2
2012 6
2013 4
2014 -3
EOD
set xrange [2008:2016]
set yrange [-2:16]
set terminal unknown
plot $data
set print $data append
print sprintf("%d 0", GPVAL_X_MIN)
print sprintf("%d 0", GPVAL_X_MAX)
set print
set terminal dumb size 60, 20
plot $data using 1:2 smooth cumulative with fillsteps
但是,正如您所看到的,此解决方案的一个问题是它会生成警告。要隐藏警告,请这样调用它:
cat example.gnuplot | gnuplot 2>/dev/null
如果您在set xrange
命令中手动设置x边界,为什么需要第一个plot命令来让gnuplot确定x边界?@user8153这仅用于示例。在真实版本中,我没有设置xrange。
$ cat example.gnuplot | gnuplot
WARNING: Plotting with an 'unknown' terminal.
No output will be generated. Please select a terminal with 'set terminal'.
16 +--------------------------------------------------+
| + + + + + + + |
14 |-+ $data using 1:2 +-|
| |
12 |-+ ******* +-|
10 |-+ * * +-|
| * *************|
8 |-+ ******* +-|
| * |
6 |-+ * +-|
| * |
4 |-+ ******* * +-|
2 |-+ * ******** +-|
| * |
0 |************* +-|
| + + + + + + + |
-2 +--------------------------------------------------+
2008 2009 2010 2011 2012 2013 2014 2015 2016