使用matplotlib同时输出两个图形

2024-06-28 18:48:26 发布

您现在位置:Python中文网/ 问答频道 /正文

简而言之,我想编写一个函数,在python中同时输出scatter matrixboxplot。 我想我可以通过创建一个带有2x1绘图阵列的图形来实现这一点。但是,当我使用Jupyter笔记本运行代码时:

def boxplotscatter(data):
    f, ax = plt.subplots(2, 1, figsize = (12,6))
    ax[0] = scatter_matrix(data, alpha = 0.2, figsize = (6,6), diagonal = 'kde')
    ax[1] = data.boxplot()

我使用名为pdf的数据得到:

enter image description here

这并不是我所期望的——我想输出散点矩阵和下面的箱线图,而不是两个空网格和一个嵌入散点矩阵的箱线图。你知道吗

修复此代码的想法?你知道吗


Tags: 函数代码图形绘图data笔记本jupyter矩阵
2条回答

我认为你只需要传递轴作为绘图函数的参数。你知道吗

f, ax = plt.subplots(2, 1, figsize = (12,6))
def boxplotscatter(data, ax):
    ax[0] = scatter_matrix(data, alpha = 0.2, figsize = (6,6), diagonal = 'kde')
    ax[1] = data.boxplot()

这里的问题是,您实际上不是在创建的轴上打印,而是替换列表的内容ax。 我不太熟悉matplotlib的面向对象接口,但是正确的语法看起来更像ax[i,j].plot(),而不是ax[i] = plot()。 现在我能提供的唯一真正的解决方案是使用功能接口,比如:

def boxplotscatter(data):
    f, ax = plt.subplots(2, 1, figsize = (12,6))
    plt.subplot(211)
    scatter_matrix(data, alpha = 0.2, figsize = (6,6), diagonal = 'kde')  
    plt.subplot(212)
    data.boxplot()

相关问题 更多 >