当前位置: 首页 > 面试题库 >

终端中的Python ASCII图

林烨烨
2023-03-14
问题内容

使用Octave,我能够在终端上绘制数组,例如,绘制带有函数值的数组将x^2在我的终端上显示以下输出:

   10000 ++---------+-----------+----------+-----------+---------++
         ++         +           +          +           +         ++
         |+         :           :          :           :         +|
         |++        :           :          :           :        ++|
         | +        :           :          :           :        + |
         | ++       :           :          :           :       ++ |
    8000 ++.+..................................................+.++
         |  ++      :           :          :           :      ++  |
         |   ++     :           :          :           :     ++   |
         |    +     :           :          :           :     +    |
         |    ++    :           :          :           :    ++    |
         |     +    :           :          :           :    +     |
    6000 ++....++..........................................++....++
         |      ++  :           :          :           :  ++      |
         |       +  :           :          :           :  +       |
         |       ++ :           :          :           : ++       |
         |        ++:           :          :           :++        |
    4000 ++........++..................................++........++
         |          +           :          :           +          |
         |          ++          :          :          ++          |
         |          :++         :          :         ++:          |
         |          : ++        :          :        ++ :          |
         |          :  ++       :          :       ++  :          |
    2000 ++.............++........................++.............++
         |          :    ++     :          :     ++    :          |
         |          :     +++   :          :   +++     :          |
         |          :       ++  :          :  ++       :          |
         |          :        +++:          :+++        :          |
         +          +          ++++      ++++          +          +
       0 ++---------+-----------+----------+-----------+---------++
         0        20000       40000      60000       80000     100000

有什么方法可以在Python中完成类似的操作,特别是使用matplotlib吗?bashplotlib似乎提供了其中一些功能,但与Octave的产品相比似乎是非常基础的。


问题答案:

正如已经给出的几个答案所建议的那样,这gnuplot是一个不错的选择。

但是,无需调用gnuplot子进程,使用pythongnuplotlib库可能会容易得多。

示例(来自:https :
//github.com/dkogan/gnuplotlib):

>>> import numpy as np
>>> import gnuplotlib as gp

>>> x = np.linspace(-5,5,100)

>>> gp.plot( x, np.sin(x) )
[ graphical plot pops up showing a simple sinusoid ]


>>> gp.plot( (x, np.sin(x), {'with': 'boxes'}),
...          (x, np.cos(x), {'legend': 'cosine'}),

...          _with    = 'lines',
...          terminal = 'dumb 80,40',
...          unset    = 'grid')

[ ascii plot printed on STDOUT]
   1 +-+---------+----------+-----------+-----------+----------+---------+-+
     +     +|||+ +          +         +++++   +++|||+          +           +
     |     |||||+                    +     +  +||||||       cosine +-----+ |
 0.8 +-+   ||||||                    +     + ++||||||+                   +-+
     |     ||||||+                  +       ++||||||||+                    |
     |     |||||||                  +       ++|||||||||                    |
     |     |||||||+                +        |||||||||||                    |
 0.6 +-+   ||||||||               +         +||||||||||+                 +-+
     |     ||||||||+              |        ++|||||||||||                   |
     |     |||||||||              +        |||||||||||||                   |
 0.4 +-+   |||||||||              |       ++||||||||||||+                +-+
     |     |||||||||             +        +||||||||||||||                  |
     |     |||||||||+            +        |||||||||||||||                  |
     |     ||||||||||+           |       ++||||||||||||||+           +     |
 0.2 +-+   |||||||||||          +        |||||||||||||||||           +   +-+
     |     |||||||||||          |        +||||||||||||||||+          |     |
     |     |||||||||||         +         ||||||||||||||||||         +      |
   0 +-+   +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +-+
     |       +        ||||||||||||||||||+         |       ++||||||||||     |
     |       |        +|||||||||||||||||          +        |||||||||||     |
     |       +        ++||||||||||||||||          |        +||||||||||     |
-0.2 +-+      +        |||||||||||||||||          +        |||||||||||   +-+
     |        |        ++||||||||||||||+           |       ++|||||||||     |
     |        +         |||||||||||||||            +        ++||||||||     |
     |         |        +||||||||||||||            +         |||||||||     |
-0.4 +-+       +        ++||||||||||||+             |        +||||||||   +-+
     |          +        |||||||||||||              +        |||||||||     |
     |          |        +|||||||||||+               +       ++|||||||     |
-0.6 +-+        +        ++||||||||||                |        +|||||||   +-+
     |           +        |||||||||||                +        ++||||||     |
     |           +        +|||||||||+                 +        |||||||     |
     |            +       ++||||||||                  +       +++|||||     |
-0.8 +-+          +      + ++||||||+                   +      + +|||||   +-+
     |             +    +   +||||||                     +    +  ++||||     |
     +           +  +  ++   ++|||++     +           +   ++  +  + ++|||     +
  -1 +-+---------+----------+-----------+-----------+----------+---------+-+
    -6          -4         -2           0           2          4           6


 类似资料:
  • 我在运行OS X Yosemite 10.10.3版本的MacBook Pro上,我在TextMate 2.0-beta.7.4版本中编写代码,所有的heroku和hubot都是最新版本。 在一堂课中,我们必须在计算机上安装Hubot,以便对终端中的代码进行本地测试。一旦代码是好的,然后我们把它推到Heroku并用另一个bot测试它。然后,如果这个bot很好,老师就推到git,我们就可以在slac

  • 我通过自制软件在macOS 10.15中安装了Saxon。现在当我尝试 网旧金山。撒克逊人。使改变 我得到 zsh:找不到命令:net.sf.saxon.变换 我做错了什么? 谢谢,geb

  • 有时,在处理Java stream()时,我发现自己需要一个非终端forEach()来触发副作用,但不终止处理。 我怀疑我可以用类似.map(item->f(item))这样的方法来实现这一点,方法f执行副作用并将项目返回到流中,但这似乎有点假。

  • 1.1.1. 终端 1.1.1. 终端 若琪 IoT Skill 的对接的基本单元为终端,终端可以是一个真实的终端,也可以表示一个智能场景、应用。每一个终端需要说明它们具备的能力接口(Interface),一个能力接口可代表终端的一个可问询状态值,如一个终端具有温度接口(Temperature Interface),我们可以对若琪说:"若琪,现在的温度是多少?",来获取终端提供的温度接口的值;也可

  • 问题内容: 这里的目标是在新的shell中运行新的python文件,并在现有的shell中运行现有的python文件。说我有两个文件,aaa.py和bbb.py。为了简单起见,aaa.py所做的只是… …并且可以说bbb.py确实是… 现在的目标是在终端1中运行aaa.py,并使其在终端2中启动bbb.py。我希望存在类似下面的命令,但无法弄清楚。 问题答案: 通常,无法从shell进行此操作。您

  • 问题内容: 我正在从https://scotch.io/tutorials/authenticate-a-node-js-api-with-json-web- tokens 进行node.js服务器设置。我是node.js的新手。我正在安装。但是当我用这个运行服务器时。 在显示的终端中: 无法将nodemon识别为内部或外部命令,可操作程序或批处理文件 命令正在运行并启动了服务器,但是命令不起作用