首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两次绘制的Matplotlib图形

两次绘制的Matplotlib图形
EN

Stack Overflow用户
提问于 2022-06-24 17:16:44
回答 1查看 95关注 0票数 0

下面的代码片段中的函数应该创建一个简单的matplotlib图并返回它。

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
import numpy as np


def random_figure():
    fig, axes = plt.subplots(2, 1, squeeze=True)
    for ax in axes:
        ax.plot(*np.random.rand(10, 2))
    return fig

我不明白的是,画出来的数字比预期的要多:

  • 如果我用my_fig = random_figure()存储返回值,它仍然是绘制的.

  • 如果我只运行random_figure(),它会显示两次:

这是我不知道的matplotlib中的一个设置吗?

我在vscode中使用jupyter笔记本,如果相关的话。

PS,我的期望是它的行为像函数

代码语言:javascript
运行
复制
def random_number():
    return np.random.rand()

当返回值与my_num = random_number()一起存储时,它将不输出任何内容。

EN

回答 1

Stack Overflow用户

发布于 2022-06-24 20:46:45

您正在观察它打印两次,因为REPL设计的最后参考项目的每个木星单元,见前两句here。在木星中,这限制了它只展示了一次:

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
import numpy as np


def random_figure():
    fig, axes = plt.subplots(2, 1, squeeze=True)
    for ax in axes:
        ax.plot(*np.random.rand(10, 2))
    return fig
random_figure();

请记住,单元格的结尾是特殊的,因为它的REPL设计。这就是为什么您可以在单元格的最后一行上放置一个变量,并在不需要print(my_variable)的情况下获得值。

上面的代码块可以工作,因为单元格最后看到的东西是;,它什么也不返回。

有了你所拥有的,它返回了情节,所以它在制作之后再次显示出来。

使用my_fig = random_figure(),您不会看到它两次,因为random_figure()返回的内容会被赋值所消耗。

添加;的诀窍通常用于抑制地块的对象代码(类似于<Figure size 432x288 with 0 Axes>'的东西),有时更多的是在输出区域中除了显示绘图之外,还会出现更多的东西,参见example here,特别是Kynan解释其工作原因的评论here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72747433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档