我有以下代码来生成图表:
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,之后是最终值。 所以我正在寻找一种相应扩展图表的方法。 结果将是:
16 +----------------------------------------+
| + + + + + + + |
14 |-+ '-' using 1:2 +-|
12 |-+ ****** +-|
| * * |
10 |-+ * **********|
8 |-+ ****** +-|
| * |
6 |-+ * +-|
4 |-+ ****** * +-|
| * * * |
2 |-+ * ******* +-|
0 |********** +-|
| + + + + + + + |
-2 +----------------------------------------+
2008 2009 2010 2011 2012 2013 2014 2015 2016
答案 0 :(得分:0)
我找到了一个解决方案,虽然这个解决方案非常糟糕。
诀窍是首先将图表渲染到虚拟终端,从而强制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
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
但是,正如您所看到的,此解决方案的一个问题是它会生成警告。要隐藏警告,请执行以下操作:cat example.gnuplot | gnuplot 2> /dev/null