python - 在 matplotlib.pyplot 图中使用传递的轴对象?

标签 python matplotlib axes

我目前正在尝试使用在函数中创建的传递轴对象,例如:

def drawfig_1():
    import matplotlib.pyplot as plt

    # Create a figure with one axis (ax1)
    fig, ax1 = plt.subplots(figsize=(4,2))

    # Plot some data
    ax1.plot(range(10))

    # Return axis object
    return ax1

我的问题是,如何在另一个图中使用返回的轴对象 ax1?例如,我想以这种方式使用它:

# Setup plots for analysis
fig2 = plt.figure(figsize=(12, 8))

# Set up 2 axes, one for a pixel map, the other for an image
ax_map = plt.subplot2grid((3, 3), (0, 0), rowspan=3)
ax_image = plt.subplot2grid((3, 3), (0, 1), colspan=2, rowspan=3)

# Plot the image
ax_psf.imshow(image, vmin=0.00000001, vmax=0.000001, cmap=cm.gray)

# Plot the map
????      <----- #I don't know how to display my passed axis here...

我试过这样的陈述:

ax_map.axes = ax1

虽然我的脚本没有崩溃,但我的轴是空的。任何帮助将不胜感激!

最佳答案

您尝试先绘制一个图,然后将该图作为子图放入另一个图(由 subplot2grid 定义)。不幸的是,这是不可能的。另见这篇文章:How do I include a matplotlib Figure object as subplot? .

您必须先制作子图,然后将子图的轴传递给您的 drawfig_1() 函数来绘制它。当然,drawfig_1() 需要修改。例如:

def drawfig_1(ax1):
    ax1.plot(range(10))
    return ax1

# Setup plots for analysis
fig2 = plt.figure(figsize=(12, 8))

# Set up 2 axes, one for a pixel map, the other for an image
ax_map = plt.subplot2grid((3, 3), (0, 0), rowspan=3)
ax_image = plt.subplot2grid((3, 3), (0, 1), colspan=2, rowspan=3)

# Plot the image
ax_image.imshow(image, vmin=0.00000001, vmax=0.000001, cmap=cm.gray)
# Plot the map:
drawfig_1(ax_map)

关于python - 在 matplotlib.pyplot 图中使用传递的轴对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22210074/

相关文章:

python - 将对象包装到派生类中

python - 在 python 中对列表进行数学运算

python 正则表达式不使用 re.match 和 re.MULTILINE 标志匹配文件内容

python - Ipython笔记本水平缩放

python - python 2.7 的 Pandas 导入错误

python - 为 Python 安装 VTK

python - 找到轮廓曲线中距离最远的点

matlab - 如何在 matlab cometd 图中设置轴

python - x y z 轴的范围相同

matplotlib - 在双轴上调整刻度标签大小