关于gnuplot:在python中绘制到终端

Plotting to the terminal in python

我试图选择一个绘图库以ASCII格式在终端中绘制数据。

在python中,有许多gnuplot的包装器,但似乎都没有满足要求列表:

  • 支持python2和python3
  • 正确包装参数和命令,而不只是薄薄的执行层
  • 避免写下文件系统

我也希望平台无关,并且依赖gnuplot似乎可以解决问题。这是一个很好的要求,而不是严格的要求。

有什么建议吗?

我想避免编写自己的包装程序,并给生态系统增加噪音,但是可用的选项似乎过于粗糙。


检查package plotext包,该包允许使用python3在终端上直接绘制数据。它非常直观,因为其用法与matplotlib软件包非常相似。

这是一个基本示例:

enter

1
sudo -H pip install plotext

对于matplotlib,主要功能是散点图(用于单点),绘图(用于线连接的点)和显示(在终端上实际打印绘图)。可以很容易地指定绘图尺寸,点和线型以及任何显示轴,数字刻度和最终方程式的内容,这些用于将绘图坐标转换为原始实数值。

以下是产生以上所示图的代码:

1
2
3
4
5
6
7
8
9
import plotext.plot as plx
import numpy as np

l=3000
x=np.arange(0, l)
y=np.sin(4*np.pi/l*np.array(x))*np.exp(-0.5*np.pi/l*x)

plx.scatter(x, y, rows = 17, cols = 70)
plx.show(clear = 0)

show中的选项clear=True用于在绘制之前清除端子:例如,在绘制连续数据流时,这很有用。
此处显示绘制连续数据流的示例:
enter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
>>> from gplot import *
>>> gplot.term("dumb")
<gplot.Gplot object at 0x7fd394c17d10>
>>> gplot('sin(x)')
>>>

    1 +--------------------------------------------------------------------+  
      |               ** **              +  ** **         +       *  *     |  
  0.8 |-+             *   **               **   *           sin(x*********-|  
      |              **    *               *    **               *    *    |  
  0.6 |-+            *     **              *     *              *      * +-|  
      |              *      *             **     **             *      *   |  
  0.4 |*+           *       *             *       *             *       *+-|  
      |*            *        *           **       *            *        *  |  
  0.2 |*+          **        *           *         *           *        *+-|  
      | *          *         *           *         *          **         * |  
    0 |-*          *          *         **         *          *          *-|  
      | *         **          *         *           *         *          * |  
 -0.2 |-+*        *           *         *           *        **          +*|  
      |  *        *            *       **           *        *            *|  
 -0.4 |-+*       *             *       *             *       *           +*|  
      |   *      *             **     **             *      *              |  
 -0.6 |-+ *      *              *     *              **     *            +-|  
      |    *    *               **    *               *    **              |  
 -0.8 |-+  *   **                *   **               **   *             +-|  
      |     *  *       +         ** **   +             ** **               |  
   -1 +--------------------------------------------------------------------+  
     -10              -5                 0                5               10  


>>>