python中的matplotlib.pyplot_关于python:导入matplotlib和matplotlib.pyplot有什么区别?

我对python还是很陌生,想知道x.y语句是否意味着y是x的子模块? 如果是这样,则不执行以下命令:

import matplotlib.pyplot as plt

只导入这个特定的子模块,什么都没有? 我必须这样做才能访问hist函数。 这对调用import matplotlib as plt时通常导入的模块有什么影响? 我可以使用plt名称将matplotlib中的所有模块放在一起吗?

我知道这个问题与从NumPy,matplotlib包导入python子模块之间有什么区别,但是这个问题的答案并没有告诉我是否在matplotlib中没有导入其他内容以及如何仅导入所有matplotlib 无需担心子模块被遗漏。

您是什么意思,您不能再使用plot函数了?

@Plasma导入matplotlip.pyplot后,您不能再使用plt.plot(x,y)(模块未导入...吗?)还是我只是干了些蠢事?

因此,如果您说import matplotlib.pyplot as plt plt.plot()无法正常工作?还是先说import matplotlib.pyplot,再说plt.plot()?

@Plasma你是对的,我刚刚尝试过此操作,之前一定做错了什么。我修改了问题,但令我更加困惑……仅导入了pyplot模块吗?还是所有matplotlib包括子模块pyplot?

pyplot是matplotlib的子模块,如果以这种方式导入它可能会更清楚:from matplotlib import pyplot as plt。您可以说from matplotlib import *,然后将matplotlib中的每个模块(包括pyplot)导入(并通过调用matplotlib.pyplot.plot进行绘制。但是,如果要绘制内容,pyplot可能是唯一需要的模块)。

@Plasma现在对我来说更有意义了!谢谢!那么最后一个问题:是否有一种方法可以将包含在matplotlib的所有子模块中的所有功能直接导入到工作区中?类似于from matplotlib import *的东西,但是会导入子模块中的所有功能,以便您可以简单地使用plot(x,y)吗?还是必须分别为每个子模块(from matplotlib.pyplot import *以及所有其他子模块类似地)执行此操作?

我不知道从每个子模块导入所有功能的任何方法。您建议的方式可以从每个子模块导入所有功能,例如from matplotlib.pyplot import *。

@Plasma感谢您的帮助!我了解它现在是如何工作的,我想我只需要习惯这些库和模块即可!最初很难缠住您的头。那谢谢啦!

您非常欢迎。我添加了一个答案,其中包括使用*导入时的潜在风险。 id建议显式导入,因为这样更容易理解发生了什么。

看一下这个代码库树:matplotlib包含一个代码库,而pyplot只是该库的文件。

import matplotlib

将导入此仓库中的所有文件。例如使用它:

import matplotlib as mpl

mpl.pyplot.plot(...)

要导入pyplot:

from matplotlib import pyplot as plt

# or

import matplotlib.pyplot as plt

plt.plot(...)

您的一个问题:您使用哪种控制台?我猜是Ipython控制台之类的吗?

编辑:

要导入所有内容:

from matplotlib import *

pyplot(...)

为什么我猜您在使用Ipython? Ipython控制台默认在启动时从numpy和其他一些库中导入所有模块,因此,在Ipython控制台中,您可以简单地使用:sqrt,而不是import math; math.sqrt等。默认情况下,matplotlib是在Ipython中导入的。

是的,我在Spyder内部使用了IPython控制台。谢谢,这很有意义。我仍然想知道(我刚才问@Plasma上面的同一个问题)是否有办法直接导入所有子模块中的所有功能?这可能不是理想的东西,但是在我看来,至少在学习如何正确使用python的头几个月中,导入matplotlib包含的所有内容并使用简单的语句(例如plot(x,y))会更容易。

谢谢!我不知道IPython会自动导入其中的一些库,但是它解释了我在使用它时注意到的几件事!您的编辑以一种方式工作,现在我可以使用pyplot.plot(x,y),但是我不能只输入plot(x,y)。没关系,多亏了您和Plasma,我了解了现在的情况!

@Moppentapper你真的了解吗?当仅导入matplotlib.*时,plot是matplotlib.pyplot中的一个函数,您抱怨不能简单地plot?在有用的情况下增加答案。

我的理解方式是:pyplot是matplotlib的子模块。编写from matplotlib import *会将所有子模块导入工作空间。在这种情况下,要使用plot函数,可以写pyplot.plot(x,y)而不是写matplotlib.pyplot.plot(x,y),但是我不能写plot(x,y),因为plot不会直接在工作空间中定义。如果要使用plot而不带"前缀",则必须使用from matplotlib.pyplot import *,但是我无法将所有子模块中的所有功能直接导入到工作区中。它是否正确?

当您了解发生了什么时,Python会变得更加有趣!!

我不知道从每个子模块导入所有功能的任何方法。您可能会建议您从子模块导入所有功能,例如from matplotlib.pyplot import *。

注意导入每个函数的潜在问题;您可以通过使用相同的名称定义自己的函数来覆盖导入的函数。例如:

from matplotlib.pyplot import *

def plot():

print"Hello!"

plot()

将输出

Hello!

这是有道理的,因此我假设在matplotlib的至少2个子模块中定义了至少一个函数。然后全部导入将导致阴影。有趣的东西现在都已经建立起来了!

我安装了conda,它为?/ .bashrc添加了一些东西。

评论使它对我有用。

你可能感兴趣的:(python中的matplotlib.pyplot_关于python:导入matplotlib和matplotlib.pyplot有什么区别?)