如何以编程方式绘制多个变量

时间:2020-09-29 18:31:22

标签: python matplotlib plot

我想针对一个因变量绘制多个自变量,并在一个图中显示它们。以下代码可以正常工作,但是我已指出了4个以上的变量。因此,手工完成所有变量会很麻烦。有任何想法吗?谢谢!

fig, axs = plt.subplots(2, 2, figsize=(10, 6))

axs[0, 0].scatter(df.ind_var1, df.dep_var)
axs[0, 1].scatter(df.ind_var2, df.dep_var)
axs[1, 0].scatter(df.ind_var3, df.dep_var)
axs[1, 1].scatter(df.ind_var4, df.dep_var)

axs[0, 0].set_title('ind_var1')
axs[0, 1].set_title('ind_var2')
axs[1, 0].set_title('ind_var3')
axs[1, 1].set_title('ind_var4')

for ax in axs.flat:
    ax.set_xticklabels([])
    ax.set_ylabel('dep_var')
    ax.set_yticklabels([])
    
fig.suptitle('Plot', fontsize=20)
fig.tight_layout()
    
plt.show()

3 个答案:

答案 0 :(得分:4)

您似乎可以做到:

# you need to provide this
ind_vars = ['ind_var1', 'ind_var2', 'ind_var3', 'ind_var4']

fig, axes = plt.subplots(2,2, figsize=(10,6))

# this combines the two loops
for col, ax in zip(ind_vars, axes.ravel()):
    # plot the data
    ax.scatter(df[col], df['dep_var'])

    # format the axis
    ax.set_title(col)
    ax.set_xticklabels([])
    ax.set_ylabel('dep_var')
    ax.set_yticklabels([])

fig.suptitle('Plot', fontsize=20)
fig.tight_layout()
    
plt.show()

答案 1 :(得分:0)

您应该查看python的seaborn软件包以进行统计绘图。

如果您希望对每个图形进行精细控制,则手动输入将使您到达那里,但是使用df ['column']格式对df.columns进行循环访问并添加该链接将使您到达想要的位置。

答案 2 :(得分:0)

如果我理解正确,我不明白为什么您不能在axs上使用for循环,如下所示:

vars = [indipendent variables]
n = 0 
for row in range(i,j):
    for col in range(n, m):
        ax[row, col] = scatter(vars[n], df.dep_var)
        n += 1

或类似的东西。