首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >何时使用matplotlib.pyplot类以及何时使用绘图对象(matplotlib.collections.PathCollection)

何时使用matplotlib.pyplot类以及何时使用绘图对象(matplotlib.collections.PathCollection)
EN

Stack Overflow用户
提问于 2013-11-10 21:13:47
回答 2查看 3.2K关注 0票数 11

我想知道问题背后的逻辑是什么,何时使用绘图实例(这是一个PathCollection),以及何时使用绘图类本身。

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
p = plt.scatter([1,2,3],[1,2,3])

提出了一个散点图。为了使它发挥作用,我不得不说:

代码语言:javascript
运行
复制
plt.annotate(...)

要配置轴标签或限制,您可以编写:

代码语言:javascript
运行
复制
plt.xlim(...)
plt.xlabel(...)

诸若此类。

但另一方面,你写道:

代码语言:javascript
运行
复制
p.axes.set_aspect(...)
p.axes.yaxis.set_major_locator(...)

这背后的逻辑是什么?我能找个地方查一下吗?不幸的是,我在文档中没有找到这个问题的答案。

何时使用实际实例p来配置图形,何时使用pyplot类plt

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-08 19:04:53

根据PEP20的说法:

  • “明示胜于含蓄。”
  • “简单胜于复杂。”

通常情况下,“让它只起作用”的代码采用pyplot的方式,因为它隐藏了许多人不关心的所有图形和轴管理。这通常用于交互模式编码、简单的一次性脚本或在高级脚本中执行的绘图。

但是,如果您要创建一个要进行绘图的库模块,并且不能保证库用户没有自己进行任何额外的绘图,那么最好是显式的,并且避免pyplot接口。我通常将函数设计为接受用户希望操作的轴和/或图形对象作为可选参数(如果不给出,则使用plt.gcf()和/或plt.gca())。

我的经验法则是,如果我正在执行的操作可以通过pyplot完成,但是如果这样做可能会更改“状态机”,那么我就避免pyplot。请注意,任何通过pyplot的操作(例如plt.xlim())都会获取/设置当前的轴/图/映像(“状态机”),而像ax.set_xlim()这样的操作则不会。

票数 7
EN

Stack Overflow用户

发布于 2013-12-13 02:19:12

‘plot’只是一个捷径,当你只有一个情节时,它是有用的。当您直接使用plt时,matplotlib会自动创建一个“图形”和一个子图,但是当您想要处理多个子图时,您将需要使用“axes”方法,例如:

代码语言:javascript
运行
复制
fig = plt.figure()
a = fig.add_subplot(211)
b = fig.add_subplot(212)
print a.__class__ #<class 'matplotlib.axes.AxesSubplot'>
print fig.__class__ #<class 'matplotlib.figure.Figure'>
a.plot([0,1],[0,1],'r')
b.plot([1,0],[0,1],'b')
fig.show()

这不能直接使用“plt”。

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

https://stackoverflow.com/questions/19895262

复制
相关文章

相似问题

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