【问题标题】:Coordinate system used by fig.add_axesfig.add_axes 使用的坐标系
【发布时间】:2017-11-20 15:50:44
【问题描述】:

考虑以下玩具示例:

import numpy as np
d = np.random.rand(160,100)

import matplotlib.pyplot as plt
fig, ax = plt.subplots()

ax.axis('off')
ax.set_xticklabels([]);
ax.set_yticklabels([]);

ax.imshow(d)

fig.add_axes([0, 0, 0.1, 0.5])

plt.show()

如果我删除fig.add_axes,那么它看起来像这样:

我不明白fig.add_axes 中使用的坐标系。我希望 (0,0) 位于第二张图片的左下角,并且坐标在第二张图片的宽度和高度上从 0 到 1 运行。我错过了什么?

请解释本例中坐标系的工作原理,以及我如何相对于图像定位轴。最终目标是在图像上方、下方或右侧放置一个颜色条。

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    您似乎在 jupyter 笔记本中运行它。这是一条重要的信息。如果您尝试将代码作为脚本运行,您将看到预期的输出。此外,当您在笔记本中将图形保存为 png 时,输出与预期的一样。因此,您也没有做错任何事情,并且坐标的解释是正确的。

    您需要记住的唯一一件事是,jupyter 中的 png 在内部使用 bbox_inches="tight" 选项保存,该选项可将图形裁剪或扩展为其内容。如果只有一半的图形填充了图像,则显示的图形将被裁剪为原始图形大小的一半。

    【讨论】:

    • 我没有意识到这很重要,感谢您无论如何都能回答!您对在 Jupyter 中使用 matplotlib 有任何提示吗,例如在这种情况下,我想将它用于颜色条。这可以在 Jupyter 内部完成吗?如果你不使用 Jupyter 来使用 matplotlib 生成绘图,你会做什么呢?保存到文件?谢谢。
    • 我认为一切都很好,您可以像在脚本中一样在 jupyter 中生成颜色条。如果您告诉我们您遇到的实际问题,肯定会帮助您获得所需的结果。
    • 问题是我想把这个轴做成一定的大小,放在我想放的地方,但是我不懂坐标系。我现在明白为什么坐标不是我想要的,例如为什么图像的左下角不在 (0,0) 处。但我不明白我应该改用什么坐标?就像问题中所说的那样,我想在图像上方、下方或右侧放置一个颜色条。我应该为此使用什么坐标? (彩条不在我的问题中,但我打算将它添加到空轴。)
    • 明确一点:我不关心在脚本中使用它时的外观或使用代码保存它时的外观,我希望它在笔记本中看起来正确。感谢您的帮助。
    • 好吧,通常你不会使用任何特定的坐标来放置一个简单的颜色条。你看过this answer吗?如前所述,任何特定问题都可能需要一个可以帮助您的特定解决方案。只要我不知道“你想把它放在哪里”就很难提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2013-08-08
    • 2016-12-04
    • 1970-01-01
    相关资源
    最近更新 更多