如何在python中为多个散点图创建循环?

如何在python中为多个散点图创建循环?,python,plot,Python,Plot,我正在尝试将大型数据帧矩阵的绘图过程自动化。目标是用另一列绘制每一列。每列代表一个变量。另请参见下图 F.e:性别与年龄、性别与体重指数、性别与吸烟、性别与类型等等 为了清晰起见,我将问题简化为下图: 起初,我试图手工绘制每个组合。但这是一个相当耗时的练习,不是我想要的 我也尝试过这个方法,但不起作用: variables = ["Sex", "Age", "BMI"] for variable in variables: plt.scatter(df.variable, df.variabl

我正在尝试将大型数据帧矩阵的绘图过程自动化。目标是用另一列绘制每一列。每列代表一个变量。另请参见下图

F.e:性别与年龄、性别与体重指数、性别与吸烟、性别与类型等等

为了清晰起见,我将问题简化为下图:

起初,我试图手工绘制每个组合。但这是一个相当耗时的练习,不是我想要的

我也尝试过这个方法,但不起作用:

variables = ["Sex", "Age", "BMI"]
for variable in variables:
plt.scatter(df.variable, df.variable)
plt.xlabel('variable')
plt.ylabel('variable')
plt.title('variable vs. variable')
plt.show()
欢迎任何帮助

PS:如果这是一个简单的练习,把变量组合的线性回归也包括在内,那也会很感激

您好


Nadia

您所编码的内容会将每一列与自身相对应。您描述的是一个嵌套循环。一个简单的升级是

col_choice = ["Sex", "Age", "BMI"]

for pos, axis1 in enumerate(col_choice):   # Pick a first col
    for axis2 in enumerate(col_choice[pos+1:]):   # Pick a later col
        plt.scatter(df.loc[:, axis1], df.loc[:, axis2])
我认为这会产生一个可以接受的系列


这有用吗?如果您想更具Python风格,请查看itertools.product以生成列选项。

您可以执行以下操作:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# Create dummy dataframe, or load your own with pd.read_csv()

columns = ["sex", "age", "BMI", "smoke", "type"]
data = pd.DataFrame(np.array([[1,0,0,1,0], [23,16,94,18,24], [32, 26, 28, 23, 19], [0,1,1,1,0], [1,2,2,2,1]]).T, columns=columns)


x_col = "sex"
y_columns = ["age", "BMI", "smoke"]


for y_col in y_columns:

    figure = plt.figure
    ax = plt.gca()
    ax.scatter(data[x_col], data[y_col])
    ax.set_xlabel(x_col)
    ax.set_ylabel(y_col)
    ax.set_title("{} vs {}".format(x_col, y_col))

    plt.legend()
    plt.show()
基本上,如果您将数据集保存为.csv文件,您可以使用pd.read_csv将其与pandas一起加载,并使用列名作为键来访问相应的行,然后在此重复,我创建了一个虚拟数据帧就是为了它


关于线性回归部分,您应该查看。它有许多回归模型,用于许多不同的任务,如回归、分类和聚类

哇!很抱歉您需要访问由变量值axis1命名的列。。。你知道怎么做吗?那是因为你指定了一个特定的常量列,而不是像我的解决方案指定的那样从轴变量中获取值。谢谢,Prune。成功了。对于读者来说,必须调整axis2,选择第二列。感谢您的帮助。至于现在,pycharm出于某种原因没有提供情节。。。