如何用程序绘制多个变量



我想画出多个自变量与一个因变量的关系图,并将它们显示在一个图中。以下代码有效,但我有超过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()

看起来你只需要做:

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

您应该查看python的seaborn包以获取统计图形。

如果你想对每个图进行精细的控制,手动输入会让你达到目的,但使用df['column']格式在df.columns上循环登录会让你到达目的地。

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

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

或者类似的东西。

最新更新