python-在matplotlib中创建两个完全独立的图并在它们之间来回移动
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-在matplotlib中创建两个完全独立的图并在它们之间来回移动,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2267字,纯文字阅读大概需要4分钟。
内容图文
![python-在matplotlib中创建两个完全独立的图并在它们之间来回移动](/upload/InfoBanner/zyjiaocheng/678/f6a5adb554774ca0ba8f2030edf18da7.jpg)
我想在python脚本中创建两个独立的matplotlib图,并可能在向各种图添加线,注释等时在它们之间来回跳转(例如,也许我调用了一个在两个图上都添加线的函数)绘图,然后再添加注释的另一个函数).
我希望通过研究matplotlib示例,我可以找出一些可行的解决方案,但是我想知道这样做的首选和最简洁的方法是什么.我倾向于对何时应该做类似的事情感到困惑
fig,ax=plt.subplots()
当我应该做类似的事情时:
fig=plt.figure()
此外,我应该如何在情节之间来回切换.如果我做了类似的事情
fig1,ax1=plt.subplots()
fig2,ax2=plt.subplots()
然后我可以通过执行以下操作来参考这些图:
ax1.plt.plot([some stuff])
ax2.plt.plot([otherstuff]
?我之所以这样问是因为,在matplotlib示例中,通常在调用plt.subplot()之后,它们并不像这样绘制图,而是调用诸如
plt.plot([stuff])
假定它们没有指定ax1或ax2无关紧要,因为示例中只有一个图.最后,我想使用类似的方法将两个图保存到文件中
plt.savefig(....)
尽管我再次需要能够独立引用两个图.那么实现此目标的正确方法是什么?
解决方法:
如果您希望能够编写清楚地将命令应用于不同轴的代码,则可以使用object oriented interface.
实际上,您的前两个示例都在使用此接口.区别在于plt.subplots()将同时创建图形对象和轴网格,而plt.figure()仅创建图形.
图形对象具有在其中创建轴的方法.因此,这两个代码块是等效的:
fig, ax = plt.subplots()
和
fig = plt.figure()
ax = fig.add_subplot(111)
通常,仅当您希望图形中的多个轴不遵循规则的网格时,后一种方法才有用.因此,您可以执行以下操作:
fig = plt.figure()
ax = fig.add_axes([.1, .1, .2, .8])
这将在图的左侧添加一个高轴对象.
接下来,如何绘制多个轴?
subplots函数采用两个位置参数来指定网格中的行数和列数(默认为(1,1).因此,如果要并排两个轴,则可以
fig, axes = plt.subplots(1, 2)
现在,轴将成为一个(1,2)对象数组,其中填充了Axes对象.对于小型网格,使用Python的元组拆包并直接引用对象通常更方便:
fig, (ax1, ax2) = plt.subplots(1, 2)
现在,您如何处理这些对象,它们与MATLAB样式的过程接口之间的关系是什么?
pyplot命名空间中的大多数函数还作为Figure或Axes对象上的方法存在. Matplotlib(和MATLAB)具有“当前”图形和轴的概念.当您调用诸如plt.plot之类的函数时,它将在当前轴上绘制(通常是最近创建的一个).当您调用诸如plt.savefig之类的函数时,它将保存当前图形.
对于简单的任务,这比使用面向对象的界面更直接,而且通常更容易.但是,当您开始绘制更复杂的图时,例如一个轴网格,其中每个网格都有多个图层(可能是散点图和回归线),能够围绕您正在做的事情而不是在您做事的地方构造代码具有很大的优势.通常,绘制以面向对象的方式编写的代码的比例将比以过程性方式编写的代码更好.
内容总结
以上是互联网集市为您收集整理的python-在matplotlib中创建两个完全独立的图并在它们之间来回移动全部内容,希望文章能够帮你解决python-在matplotlib中创建两个完全独立的图并在它们之间来回移动所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。