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