首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用matplotlib将inset_axes添加到子图中

如何使用matplotlib将inset_axes添加到子图中
EN

Stack Overflow用户
提问于 2017-09-22 10:41:49
回答 1查看 4.1K关注 0票数 4

我试图在matplotlib中绘制一些子图,每个子图应该有一个内嵌轴。我可以让代码示例用于使用mpl_toolkits.axes_grid.inset_locator.inset_axes()添加一个嵌入轴的单个轴,并且我可以在没有嵌入轴的情况下很好地绘制子图,但是当试图对循环中的子图进行同样的绘制时,我在第二个子图上得到了TypeError: 'AxesHostAxes' object is not callable 。当number_of_plots是==1 (但不是>1 )时,这似乎有点奇怪。我应该怎么做,还是它是一个bug?(matplotlib.__version__是'1.5.1')

代码语言:javascript
运行
复制
from matplotlib import pyplot as plt
from mpl_toolkits.axes_grid.inset_locator import inset_axes
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
n_row, n_col = 4, 4
fig = plt.figure(1,(10,10))
#number_of_plots = 1 Works!
number_of_plots = n_row * n_col # Does not work!
for idx in range(number_of_plots):
    ax = fig.add_subplot(n_row, n_col, idx + 1)
    ax.plot(x, y)
    inset_axes = inset_axes(ax,
                            width="30%", # width = 30% of parent_bbox
                            height="30%", # height : 1 inch
                            )

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-22 11:32:13

对于未来的读者:This post展示了在matplotlib中创建嵌入的方法。

这里对这个问题的具体回答是:这不是一个bug。您正在重新定义inset_axes

在行inset_axes = inset_axes(...)之前,inset_axes是来自mpl_toolkits.axes_grid.inset_locator的函数。之后,inset_axes是该函数的返回,它是一个AxesHostAxes

当然,一般的建议是:从不用与您导入或在代码中使用的函数同名调用变量。

具体解决办法:

代码语言:javascript
运行
复制
ax_ins = inset_axes(ax, width="30%",  height="30%")
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46362793

复制
相关文章

相似问题

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