【问题标题】:Why is it not possiple to write from matplotlib import * and then matplotlib.pyplot.plot?为什么不能从 matplotlib import * 然后 matplotlib.pyplot.plot 写入?
【发布时间】:2020-11-10 14:03:31
【问题描述】:

我知道What is the difference between importing matplotlib and matplotlib.pyplot? 很相似。但是根据 Plasma 的评论,它应该能够从 matplotlib import * 然后 matplotlib.pyplot.plot 写入。但正如你所看到的,我只得到了 NameError。我知道你可以从 matplotlib import pyplot 编写。但是我只想知道为什么你不能像下面的程序图片那样写:

提前致谢!

【问题讨论】:

  • 因为你导入的不是matplotlib,而是matplotlib的所有元素;基本上对象 matplotlib 不在环境中,但子对象在环境中。
  • BigBen - 我试过了,但它对我不起作用。
  • 但是当我从 matplotlib import * 编写时,pyplot 不只是我正在导入的众多模块中的一个。所以 from matplotlib import pyplot 应该只是 * 所指的模块之一吧?
  • 另外,如果我只在程序开始时写 import matplotlib,我该如何访问 pyplot?
  • BigBen - 但是如果我想使用 matplotlib 提供的几个功能怎么办。我想我会写 import matplotlib 或 from matplotlib import *.但是我如何从 pyplot 访问特定的函数,比如 plot() 等等?

标签: python-3.x matplotlib plot import module


【解决方案1】:

简单地说,pyplotmatplotlib 的子模块,不会因为你导入了matplotlib 而自动导入。

当你运行import matplotlib as mpl时,只会导入一组特定的方法,即你可以在之后使用mpl.use()mpl.rc_params。如果您对导入后确切可用的内容感兴趣,请尝试:

print(dir(mpl))

当您运行from matplotlib import * 时,可以使用与以前相同的方法,只是没有mpl. 前缀。这就是为什么您通常不应该这样做,因为您可能已经计划编写自己的函数,称为 use()

如果您想实际绘图,则需要显式导入pyplot,即添加:

from matplotlib import pyplot

或:

import matplotlib.pyplot as plt

重要的旁注: 导入matplotlib.pyplot 实际上会进一步填充mpl 命名空间;只有同时导入matplotlib as mplmatplotlib.pyplot 时,您才能访问mpl.ticker 模块。如果你不明确导入pyplot,你会得到一个AttributeError: "module 'matplotlib' has no attribute 'ticker'"

Suggested reading regarding the use of namespaces in python

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 2013-06-20
    • 2013-07-26
    • 1970-01-01
    • 2019-08-01
    • 2018-02-12
    相关资源
    最近更新 更多