【问题标题】:Call to plt.subplot() resets subplot size调用 plt.subplot() 重置子图大小
【发布时间】:2020-06-28 14:22:27
【问题描述】:

我是 matplotlib 新手,所以请原谅我的菜鸟问题。这段代码很好用:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(2, 2, 
                       gridspec_kw={
                           'width_ratios': [2, 1],
                           'height_ratios': [1, 2]})

ax[0][0].plot(range(5), range(5, 10))
ax[0][1].plot(range(5), range(10, 5, -1))
ax[1][0].plot(range(5), range(5, 10))
ax[1][1].plot(range(5), range(10, 5, -1))

但是,如果我调用plt.subplot(221),用gridspec_kw 定义的比率就会丢失:子图在图的左上四分之一处重新绘制(第三个子图消失了)。

您能解释一下发生了什么以及如何在不丢失比率的情况下获得对子图的引用吗?

谢谢!

【问题讨论】:

    标签: python matplotlib subplot


    【解决方案1】:

    通过调用plt.subplot(221),您可以在 2x2 网格 (221) 的左上方位置创建一个新的子图。 在plt.subplot()的注释中注明:

    Creating a subplot will delete any pre-existing subplot that overlaps 
    with it beyond sharing a boundary
    

    我不确定你到底是什么意思

    如何获得对子图的引用

    您可以通过ax[i, j] 访问相应的轴,就像在您的代码 sn-p 中一样。

    【讨论】:

    • 感谢您尝试第一个答案。我对“plt.subplot”的理解可能确实有问题,但我明白如果这个位置已经存在一个子图,它不会被替换,但是所有后续对 plt 的调用都会引用这个子图。你能确认这是错的吗?我最初的需要只是添加一个轴标签,但是使用'ax [0] [0] .xlabel',我得到:AxesSubplot object has no attribute xlabel 所以基本上,我会对任何设置的方法感到满意xlabel 值 :-)
    • Set_xlabel 是你想要的。
    • WRT 访问现有轴我认为返回相同的轴,但前提是它的大小相同,在这种情况下不是。不管你应该只使用面向对象的 API,你都会没事的
    猜你喜欢
    • 2019-07-20
    • 2020-12-31
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多