【问题标题】:How does plt.show() know what to show?plt.show() 如何知道要显示什么?
【发布时间】:2018-07-02 02:35:15
【问题描述】:

我的问题不是关于 matplotlib 的详细信息,而是一个一般性的编程和问题,我正在寻找有关在 python 或 matplotlib 核心中实现这一点的机制的答案。

假设我有一个使用代码的散点图:

import matplotlib.pyplot as plt
plt.scatter(a,b)
plt.show()

我想知道这个语句是如何处理的?
python(或matplotlib?)如何知道要绘制什么以及从哪里获取数据?
解释器如何处理这些语句?

【问题讨论】:

  • 当您提供数据ab 时,它知道要绘制什么。 plt.show() 显示所有已创建的图形
  • 您询问 python 的机制...首先阅读有关它的教程。或许您之后可以缩小您的问题范围?
  • 已经提出了类似的问题,例如this onethis one。了解 matplotlib 是如何工作的肯定是一个有效的愿望。另一方面,尚不清楚在这种情况下特别不清楚的是什么。如果plt.scatter 创建了一个图形,那么plt.show() 显示该图形有什么令人惊讶的?如果您能具体说明理解问题,这将有所帮助。
  • 感谢大家的反对,@DavidG 感谢您的评论和编辑,我的意思是它是什么样的结构?如果没有提供任何输入,它怎么知道该怎么做?
  • 您希望提供什么样的输入?

标签: python python-3.x python-2.7 matplotlib


【解决方案1】:

也许我终于明白这个问题的意义所在了。当然我们不能在这里解释 pyplot,因为这太复杂了,需要一个完整的教程(顺便说一句确实存在)。但是我们可以看看 pyplot 如何以非常简化的方式作为一个模块工作。

让我们创建myplot,终极控制台绘图库。 ;-)

模块 myplot 可能如下所示。它有两个函数scattershow 和两个变量figuresplotplot 将存储我们要绘制的坐标系。 figures 将存储我们创建的数字。

plot = """
^            
|            
|            
|            
|            
|            
+----------->"""

figures =  []

def scatter(X,Y):
    thisplot = list(plot[:])

    for x,y in zip(X,Y):
        thisplot[1+14*(6-y)+x] = "*"
    thisplot = "".join(thisplot)

    figures.append(thisplot)

def show():
    for fig in figures:
        print(fig)

调用scatterplot 创建一个新图形并将其存储在figures 列表中。调用 show 会从该列表中获取所有数字,并显示它们(在控制台中打印它们)。

因此使用myplot 看起来与上面的示例完全相同。

import myplot as mlt

mlt.scatter([2,3,4,5,6,8],[2,5,4,4,3,2])

mlt.show() 

创建输出:

^            
|  *         
|   **       
|     *      
| *     *    
|            
+----------->

【讨论】:

  • 谢谢,所以 plt.show() 查找在 matplotlib 中定义的特殊列表,该列表负责存储我的所有绘图。我对么?感谢您的详细解答
猜你喜欢
  • 1970-01-01
  • 2015-07-03
  • 2021-12-14
  • 1970-01-01
  • 2017-04-05
  • 2015-01-09
  • 1970-01-01
  • 2015-08-18
  • 2020-12-04
相关资源
最近更新 更多