【Python&Seaborn】Seaborn绘画(以sklearn的鸢尾花数据集为例)
在数据分析和可视化领域,数据集的统计图形是一种强大的工具,可以帮助我们更好地理解数据的分布、趋势和关系。本文将介绍如何使用Python中的Seaborn库绘制鸢尾花数据集的各种统计图形,包括条形图、计数图、散点图、箱图、小提琴图、多变量曲线图和热图。
目录指引
引入库文件,配置和加载数据
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.datasets import load_iris
import warnings
warnings.filterwarnings('ignore')
pd.set_option('expand_frame_repr', False)
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文字体为黑体
plt.rcParams['axes.unicode_minus'] = False # 解决负号'-'显示为方块的问题
# 加载数据
iris = load_iris()
X = iris.data # 特征向量
y = iris.target # 类别标签
# 将特征向量和类别标签合并为一个DataFrame
df = pd.DataFrame(X, columns=iris.feature_names)
df['target'] = y
print(df)
绘制条形图
sns.barplot(x='target', y='sepal length (cm)', data=df)
plt.title('鸢尾花条形图')
plt.savefig('seaborn图/鸢尾花条形图.png')
plt.show()
绘制计数图
sns.countplot(x='petal width (cm)', hue='target', data=df)
plt.title('鸢尾花计数图')
plt.xticks(rotation=45)
plt.savefig('seaborn图/鸢尾花计数图.png')
plt.show()
绘制计数图2
sns.countplot(y='petal width (cm)', hue='target', data=df)
plt.title('鸢尾花计数图2')
plt.savefig('seaborn图/鸢尾花计数图2.png')
plt.show()
绘制散点图
sns.stripplot(x='target', y='sepal length (cm)', data=df, palette=['red', 'orange', 'green'])
plt.title('鸢尾花散点图')
plt.savefig('seaborn图/鸢尾花散点图.png')
plt.show()
绘制散点图2
sns.swarmplot(x='target', y='sepal length (cm)', data=df, palette=['red', 'orange', 'green'])
plt.title('鸢尾花散点图2')
plt.savefig('seaborn图/鸢尾花散点图2.png')
plt.show()
绘制箱图
sns.boxplot(x='target', y='sepal length (cm)', data=df)
plt.title('鸢尾花箱图')
plt.savefig('seaborn图/鸢尾花箱图.png')
plt.show()
绘制箱图2
sns.boxplot(x='sepal length (cm)', y='target', data=df, orient='h')
plt.title('鸢尾花箱图2')
plt.savefig('seaborn图/鸢尾花箱图2.png')
plt.show()
绘小提琴图
sns.violinplot(x='target', y='sepal length (cm)', data=df)
plt.title('鸢尾花小提琴图')
plt.savefig('seaborn图/鸢尾花小提琴图.png')
plt.show()
绘小提琴图2
sns.violinplot(x='target', y='sepal length (cm)', data=df, split=True, inner='stick')
plt.title('鸢尾花小提琴图2')
plt.savefig('seaborn图/鸢尾花小提琴图2.png')
plt.show()
设置中文字体为微软雅黑
sns.set(font="Microsoft YaHei", style="whitegrid")
鸢尾花小提琴图展示特征与品种关系
f, axes = plt.subplots(2,2,figsize=(8,8),sharex=True)
sns.despine(left=True)
sns.violinplot(x='target', y='sepal length (cm)', data=df, ax=axes[0, 0])
sns.violinplot(x='target', y='sepal width (cm)', data=df, ax=axes[0, 1])
sns.violinplot(x='target', y='petal length (cm)', data=df, ax=axes[1, 0])
sns.violinplot(x='target', y='petal width (cm)', data=df, ax=axes[1, 1])
plt.suptitle('鸢尾花小提琴图展示特征与品种关系', fontsize=20)
plt.savefig('seaborn图/鸢尾花小提琴图展示特征与品种关系.png')
plt.show()
点线图展示特征与品种关系
f, axes = plt.subplots(2,2,figsize=(8,8),sharex=True)
sns.despine(left=True)
sns.pointplot(x='target', y='sepal length (cm)', data=df, ax=axes[0, 0])
sns.pointplot(x='target', y='sepal width (cm)', data=df, ax=axes[0, 1])
sns.pointplot(x='target', y='petal length (cm)', data=df, ax=axes[1, 0])
sns.pointplot(x='target', y='petal width (cm)', data=df, ax=axes[1, 1])
plt.suptitle('鸢尾花点线图展示特征与品种关系', fontsize=20)
plt.savefig('seaborn图/鸢尾花点线图展示特征与品种关系.png')
plt.show()
各特征之间关系的矩阵图
g = sns.pairplot(data=df, hue='target', palette=['yellow', 'green', 'blue'], height=1.85, aspect=1.65)
plt.suptitle('鸢尾花各特征之间关系的矩阵图', fontsize=20)
plt.tight_layout()
plt.savefig('seaborn图/鸢尾花各特征之间关系的矩阵图.png')
plt.show()
多变量曲线图
plt.subplots(figsize=(10, 8))
pd.plotting.andrews_curves(df, 'target', colormap='cool')
plt.suptitle('鸢尾花多变量曲线图', fontsize=20)
plt.savefig('seaborn图/鸢尾花多变量曲线图.png')
plt.show()
热图
fig = plt.gcf()
fig.set_size_inches(12, 8)
fig=sns.heatmap(df.corr(), annot=True, cmap='Blues',
linewidths=1, linecolor='k', square=True,
mask=False, vmin=1, vmax=1,
cbar_kws={'orientation':'vertical'}, cbar=True)
plt.suptitle('鸢尾花热图', fontsize=20)
plt.savefig('seaborn图/鸢尾花热图.png')
plt.show()