psql and gnuplot
psql from PostgreSQL 12 can produces CSV format. This format is well readable by gnuplot. So anybody can use it together:
\pset format csv
select i, sin(i) from generate_series(0, 6.3, 0.5) g(i) \g |gnuplot -p -e "set datafile separator ','; set key autotitle columnhead; plot '-'with boxes"
1 +-+---------+-*******--+-----------+----------+-----------+--------+-+
+ + * ******* + + + +
0.8 +-+ ****** * * sin *******-+
| * * * * |
0.6 +-+ * * * ******* +-+
| ******* * * * * |
0.4 +-+* * * * * * +-+
| * * * * * * |
0.2 +-+* * * * * ****** +-+
0 **********************************************************************
| * * * * * * *
-0.2 +-+ * * * * * *+-*
| * * * * * ****
-0.4 +-+ ******* * * * *+-+
| * * * * * |
-0.6 +-+ * * * * *+-+
| * * * ******* |
-0.8 +-+ ******* * * +-+
+ + + + + * * + * +
-1 +-+---------+----------+-----------+----------+--************------+-+
0 1 2 3 4 5 6
postgres=# select i, sin(i) from generate_series(0, 6.3, 0.05) g(i) \g |gnuplot -p -e "set datafile separator ','; set key autotitle columnhead; set terminal dumb enhanced; plot '-'with boxes"
1 +-+-------+-*******-+---------+--------+---------+---------+-------+-+
+ ************ + + + + +
0.8 +-+ **************** sin *******-+
| ****************** |
0.6 +-+ ******************** +-+
| ************************ |
0.4 +-+************************** +-+
| **************************** |
0.2 +****************************** +-+
0 *************************************************************** +-+
| ******************************** |
-0.2 +-+ ****************************** +-+
| **************************** |
-0.4 +-+ ************************** +-+
| *********************** |
-0.6 +-+ ********************* +-+
| ****************** |
-0.8 +-+ **************** +-+
+ + + + + ************ + +
-1 +-+-------+---------+---------+--------+---********--------+-------+-+
0 1 2 3 4 5 6 7
postgres=# select i, sin(i) from generate_series(0, 6.3, 0.05) g(i) \g |gnuplot -p -e "set datafile separator ','; set key autotitle columnhead; set terminal dumb enhanced; plot '-'with lines ls 1"
1 +-+-------+-*******-+---------+--------+---------+---------+-------+-+
+ *** *** + + + + +
0.8 +-+ *** *** sin *******-+
| ** ** |
0.6 +-+ * * +-+
| ** ** |
0.4 +-+** ** +-+
| ** ** |
0.2 +** ** +-+
0 **+ ** * +-+
| ** ** |
-0.2 +-+ ** ** +-+
| * ** |
-0.4 +-+ * ** +-+
| ** * |
-0.6 +-+ ** ** +-+
| ** ** |
-0.8 +-+ ** *** +-+
+ + + + + *** +*** + +
-1 +-+-------+---------+---------+--------+---*******---------+-------+-+
0 1 2 3 4 5 6 7
This can be little bit simplified with psql macros
postgres=# \set gnuplot '\\g | gnuplot -p -e "set datafile separator \',\'; set key autotitle columnhead; set terminal dumb enhanced; plot \'-\'with boxes"'
postgres=# \pset format csv
postgres=# select i, sin(i) from generate_series(0, 6.3, 0.05) g(i) :gnuplot
1 +-+-------+-*******-+---------+--------+---------+---------+-------+-+
+ ************ + + + + +
0.8 +-+ **************** sin *******-+
| ****************** |
0.6 +-+ ******************** +-+
| ************************ |
0.4 +-+************************** +-+
| **************************** |
0.2 +****************************** +-+
0 *************************************************************** +-+
| ******************************** |
-0.2 +-+ ****************************** +-+
| **************************** |
-0.4 +-+ ************************** +-+
| *********************** |
-0.6 +-+ ********************* +-+
| ****************** |
-0.8 +-+ **************** +-+
+ + + + + ************ + +
-1 +-+-------+---------+---------+--------+---********--------+-------+-+
0 1 2 3 4 5 6 7



1 Comments:
Hi, thanks for this awesome post. How do we make this to print letters /numbers ?
ex: Hello
Post a Comment
Subscribe to Post Comments [Atom]
<< Home