使用matplotlib

时间:2016-09-28 06:57:35

标签: python matplotlib jupyter-notebook

简而言之,我想编写一个在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

这不完全是我所期望的 - 我想输出散点矩阵,在它下面输出箱线图,而不是两个空网格和一个嵌入散点矩阵的箱线图。

修复此代码的想法?

2 个答案:

答案 0 :(得分:1)

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

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()

答案 1 :(得分:0)

这里的问题是,您实际上并没有在创建的轴上进行绘图,而只是替换列表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()