Matplotlib绘制多个子图
1.方式一:subplots
import pandas as pd
import seaborn as sns # 基于matplotlib和pandas的画图库
import matplotlib.pyplot as plt
#构建pandas对象
from sklearn import datasets
california = datasets.fetch_california_housing()
data = pd.DataFrame(california.data, columns=california.feature_names)
target = pd.DataFrame(california.target, columns=california.target_names)
# 获取数值列
numeric_cols = data.select_dtypes(include=['number']).columns.tolist()
n_features = len(numeric_cols)
n_cols = 4 # 一行有几个图
n_rows = (n_features + n_cols - 1)// n_cols # 一共分几行
# 构建画布
fig, axes = plt.subplots(
nrows=n_rows, # 行数
ncols=n_cols, # 列书
figsize=(18, 5 * n_rows), # 单个图表大小
constrained_layout=True # 启用自动布局
)
axes = axes.flatten() # 转置
# 循环绘制图像
for idx, feature in enumerate(numeric_cols):
ax = axes[idx] # 获取当前子图对象
ax.scatter(data[feature], target['MedHouseVal'],s=10) # 设置x,y轴及点的大小
ax.set_title(f"{feature}-MedHouseVal")
ax.set_xlabel(feature)
ax.set_ylabel("MedHouseVal")
plt.show()

2.方式二:seaborn
import pandas as pd
import seaborn as sns # 基于matplotlib和pandas的画图库
import matplotlib.pyplot as plt
#构建pandas对象
from sklearn import datasets
california = datasets.fetch_california_housing()
data = pd.DataFrame(california.data, columns=california.feature_names)
target = pd.DataFrame(california.target, columns=california.target_names)
new_data = pd.concat([data,target],axis=1)
# 获取数值列
numeric_cols = new_data.select_dtypes(include=['number']).columns.tolist()
#绘制图形
sns.set(style='ticks')
sns.pairplot(new_data[numeric_cols],hue=None, kind="reg",height = 2.5)
plt.show();
会绘制数据的两两相关关系

6103

被折叠的 条评论
为什么被折叠?



