Matplotlib空白图(应该有子图)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matplotlib空白图(应该有子图)相关的知识,希望对你有一定的参考价值。

我正在尝试使用Matplotlib在for循环中调用的函数内生成绘图轴,并使用这些轴创建最终的多面板图形。但是,尽管在我的功能中创建轴时显示正确的线,但多面板图最终会出现空轴。我究竟做错了什么?我的代码如下。

import numpy as np
import matplotlib.pyplot as plt

def create_axis(alpha, beta):
    fig, ax = plt.subplots(figsize=(5, 4))
    x = np.arange(10, dtype=float)
    y = alpha + x * beta

    ax.plot(x, y)

    return ax

def create_plot():
    alpha = 3.

    axes_pool = []
    for i in range(4):
        axes_pool.append(create_axis(alpha, i))

    fig, axes = plt.subplots(1, 4)

    for i in range(len(axes)):
        axes[i] = axes_pool[i]

    plt.show()

if __name__ == '__main__':
    create_plot()
答案

您正在将轴传递给子函数以允许已创建的子图上的plt。

正确的方法是将轴作为create_axis函数的参数之一发送,它将在所提供的轴上绘制所需的数据。

import numpy as np
import matplotlib.pyplot as plt

def create_axis(ax,alpha, beta):
    x = np.arange(10, dtype=float)
    y = alpha + x * beta

    ax.plot(x, y)


def create_plot():
    alpha = 3.

    fig, axes = plt.subplots(1, 4,figsize=(5,4)))

    for i,ax in enumerate(axes):
        create_axis(ax,alpha,i)

if __name__ == '__main__':
    create_plot()
plt.show()

输出:

enter image description here

以上是关于Matplotlib空白图(应该有子图)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 matplotlib 中制作空白子图?

使用 matplotlib 的动画子图

R语言ggplot2多子图(facet grid)绘制注释实战:无子图注释有子图注释自定义每个子图注释的位置多网面子图注释

尝试将 3d 子图添加到 matplotlib 图

在 matplotlib 中设置子图的大小

如何在 matplotlib 子图图像轴之间强制相同大小