在python中绘制到终端

时间:2017-06-09 11:41:53

标签: python gnuplot

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

在python中有很多gnuplot的包装器,但似乎所有这些都没有达到要求列表:

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

此外,我想要平台独立的东西,并依赖于gnuplot似乎是一个交易破坏者。这是一个很好的,而不是严格的要求。

有什么建议吗?

我想避免编写自己的包装并为生态系统添加噪音,但可用的选项看起来太粗糙了。

2 个答案:

答案 0 :(得分:2)

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

这是一个基本示例:

enter image description here

您可以使用以下命令进行安装:

sudo -H pip install plotext

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

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

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)

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

package description提供了有关如何自定义图的更多信息。 该软件包已经在Ubuntu 16上进行了完美的测试。未来可能的开发(应要求)可能涉及到python2和其他图形界面(例如jupiter)的扩展。如果您在使用它时遇到任何问题,请告诉我。谢谢。

我希望这能回答您的问题。

答案 1 :(得分:0)

您可以尝试以下一种方法: https://github.com/mzechmeister/python/wiki/gplot.py

  • 支持python2 / python3 / jupyter
  • 支持所有命令
  • 选择如何传输数据(请参见参数tmp:tmpfile,数据块等)
>>> 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   


>>>