散点图可以了解数据之间的各种相关性,如正比、反比、无相关、线性、指数级、 U形等,而且也可以通过数据点的密度(辅助拟合趋势线)来确定相关性的强度。另外,也可以探索出异常值(在远超出一般聚集区域的数据点称)。
1、加载数据
import pandas as pd
from sklearn.datasets import load_iris
import warnings
# 禁用所有警告信息
warnings.filterwarnings('ignore')
# 加载数据
iris = load_iris()
iris
iris.keys()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target
df.head()
2、基于seaborn的散点图
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
sns.scatterplot(x=df['sepal length (cm)'], y=df['sepal width (cm)'])
3、基于matplotlib的散点图
plt.plot('sepal length (cm)', 'sepal width (cm)', data=df, linestyle='none', marker='o')
plt.show()
3、绘制子图对比
sns.set(font='SimHei', font_scale=0.8, style="darkgrid") # 解决Seaborn中文显示问题
# 构造子图
fig, ax = plt.subplots(2,2,constrained_layout=True, figsize=(8, 8))
ax_sub = sns.scatterplot(data=df, x="sepal length (cm)", y="sepal width (cm)", hue='target', ax=ax[0][0])
ax_sub.set_title('1')
ax_sub = sns.scatterplot(data=df, x="sepal length (cm)", y="sepal width (cm)", hue='target', style='target', ax=ax[0][1])
ax_sub.set_title('2')
ax_sub = sns.scatterplot(data=df, x="sepal length (cm)", y="sepal width (cm)", hue='target', style='petal width (cm)', ax=ax[1][0])
ax_sub.set_title('3')
# 增加趋势拟合线
ax_sub = sns.regplot(x=df["sepal length (cm)"], y=df["sepal width (cm)"], fit_reg=True,
line_kws={"color":"r","alpha":0.7,"lw":5},ax=ax[1][1])
ax_sub.set_title('增加趋势拟合线')