【问题标题】:Pyplot: Shared axes and no space between subplotsPyplot:共享轴,子图之间没有空格
【发布时间】:2014-05-01 16:39:32
【问题描述】:

这与new pythonic style for shared axes square subplots in matplotlib? 相关(或者说是后续行动)。

我想让子图共享一个轴,就像上面链接的问题一样。但是,我也希望地块之间没有空间。这是我的代码的相关部分:

f, (ax1, ax2) = plt.subplots(1, 2, sharex=True, sharey=True)
plt.setp(ax1, aspect=1.0, adjustable='box-forced')
plt.setp(ax2, aspect=1.0, adjustable='box-forced')

# Plot 1
ax1.matshow(pixels1, interpolation="bicubic", cmap="jet")
ax1.set_xlim((0,500))
ax1.set_ylim((0,500))

# Plot 2
ax2.matshow(pixels2, interpolation="bicubic", cmap="jet")
ax2.set_xlim((0,500))
ax2.set_ylim((0,500))

f.subplots_adjust(wspace=0)

结果如下:

如果我注释掉两个 plt.setp() 命令,我会添加一些白色边框:

如何使图形看起来像我的第一个结果,但轴的接触却像第二个结果一样?

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    编辑:获得结果的最快方法是@Benjamin Bannier 描述的方法,只需使用

    fig.subplots_adjust(wspace=0)
    

    另一种方法是制作一个宽/高比等于2 的图形(因为您有两个图)。仅当您计划将图形包含在文档中并且您已经知道最终文档的列宽时,才建议这样做。

    您可以在对Figure(figsize=(width,height)) 的调用中设置宽度和高度,或作为plt.subplots() 的参数,以英寸为单位。示例:

    fig, axes = plt.subplots(ncols=2, sharex=True, sharey=True,figsize=(8,4))
    fig.subplots_adjust(0,0,1,1,0,0)
    

    截图:

    正如@Benjamin Bannier 指出的那样,作为一个缺点,您的利润为零。然后您可以使用subplot_adjust(),但如果您想保持解决方案简单,则必须小心以对称方式留出空间。一个例子可以是fig.subplots_adjust(.1,.1,.9,.9,0,0)

    【讨论】:

    • 您的subplots_adjust 隐藏了可能不需要的轴。我建议 subplots_adjust(hspace=0) 专门删除面板之间的空间。
    • 是的,我的脑海里似乎有错误的画面,我总是把这两者混为一谈。
    • 如果您查看我原来的问题,我确实使用了subplots_adjust(wspace=0),它确实不会杀死空间。但是,您的解决方案使用适当的图形大小并仔细对称地调整子图边距确实 工作并且足以满足我的目的!我仍然很恼火,很难,我的原始代码不起作用......
    • 我发现了我的错误! setp() 行应该发生在 matshow() 命令之后(我猜这在 pyplot 世界中是有意义的),然后它会按照您的建议工作!谢谢。
    猜你喜欢
    • 2017-05-27
    • 2014-09-07
    • 2015-07-21
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 2019-09-03
    • 2021-03-14
    • 1970-01-01
    相关资源
    最近更新 更多