简而言之,我想编写一个在python中一次输出scatter matrix和boxplot的函数。 我想通过创建一个带有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
的数据:
这不完全是我所期望的 - 我想输出散点矩阵,在它下面输出箱线图,而不是两个空网格和一个嵌入散点矩阵的箱线图。
修复此代码的想法?
答案 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()