seaborn绘图

Python中的一个制图工具库,可以制作出吸引人的、信息量大的统计图

在Matplotlib上构建,支持numpy和pandas的数据结构可视化,甚至是scipy和statsmodels的统计模型可视化

seaborn的特点:

  1. 多个内置主题及颜色主题
  2. 可视化单一变量、二维变量用于比较数据集中各变量的分布情况
  3. 可视化线性回归模型中的独立变量及不独立变量
  4. 可视化矩阵数据,通过聚类算法探究矩阵间的结构
  5. 可视化时间序列数据及不确定性的展示
  6. 可在分割区域制图,用于复杂的可视化

seaborn的安装: 
1. conda install seaborn 
2. pip install seaborn

import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

1. 数据集分布可视化

1.1 单变量分布

# 正态分布的500个数据
x1 = np.random.normal(size=500)

# 分布图,默认是直方+线型
sns.distplot(x1);
  • output_3_0.png-13.4kB
# 均匀分布的500个整数数据
x2 = np.random.randint(0, 100, 500)

# 分布图,默认是直方+线型
sns.distplot(x2);

output_4_0.png-13.1kB

# 分布图,bin是直方的个数,kde是线型(false表示去掉线型),rug显示每个数据的分布(下面深蓝色的部分)
sns.distplot(x1, bins=20, kde=False, rug=True)

output_5_1.png-5.5kB

# 核密度估计,hist表示直方(false表示不要直方)
sns.distplot(x2, hist=False, rug=True)

output_6_1.png-12.3kB

# 核密度函数也可以表示成如下,shade表示阴影
sns.kdeplot(x2, shade=True)
sns.rugplot(x2)

output_7_1.png-12.6kB

# 拟合参数分布
sns.distplot(x1, kde=False, fit=stats.gamma)

output_8_1.png-14.1kB

1.2 双变量分布

# 双变量分布
df_obj1 = pd.DataFrame({"x": np.random.randn(500),
                   "y": np.random.randn(500)})

df_obj2 = pd.DataFrame({"x": np.random.randn(500),
                   "y": np.random.randint(0, 100, 500)})

# print df_obj1
# print df_obj2
# 散布图
sns.jointplot(x="x", y="y", data=df_obj2)

output_11_1.png-20.9kB

# 二维直方图
sns.jointplot(x="x", y="y", data=df_obj2, kind="hex");

output_12_0.png-34.1kB

# 核密度估计
sns.jointplot(x="x", y="y", data=df_obj1, kind="kde");

output_13_0.png-16.5kB

1.3 数据集中变量间关系可视化

# 数据集中变量间关系可视化
dataset = sns.load_dataset("tips")
#dataset = sns.load_dataset("iris")
sns.pairplot(dataset);

output_15_0.png-31.5kB

2. 类别数据可视化

#titanic = sns.load_dataset('titanic')
#planets = sns.load_dataset('planets')
#flights = sns.load_dataset('flights')
#iris = sns.load_dataset('iris')
exercise = sns.load_dataset('exercise') # 该数据集是自带的

2.1 类别散布图

一个变量是类别变量,另一个是连续性变量。

使用.stripplot数据点会重叠

sns.stripplot(x="diet", y="pulse", data=exercise)
  • 1

output_19_1.png-8.3kB

.swarmplot()数据点会避免重叠,并且会把其他列的信息也展现出来。

sns.swarmplot(x="diet", y="pulse", data=exercise, hue='kind')
  • 1

output_21_1.png-14.4kB

2.2 类别内数据分布

# 1.盒子图,类似与K线图
sns.boxplot(x="diet", y="pulse", data=exercise)

output_23_1.png-5.6kB

# 盒子图,hue指定子类别
sns.boxplot(x="diet", y="pulse", data=exercise, hue='kind')

output_24_1.png-7.9kB

# 2.小提琴图
#sns.violinplot(x="diet", y="pulse", data=exercise)
sns.violinplot(x="diet", y="pulse", data=exercise, hue='kind')

output_25_1.png-20.2kB

2.3 类别内统计图

# 柱状图
sns.barplot(x="diet", y="pulse", data=exercise, hue='kind')

output_27_1.png-7.9kB

# 点图
sns.pointplot(x="diet", y="pulse", data=exercise, hue='kind');

output_28_0.png-11.4kB

猜你喜欢

转载自blog.csdn.net/qq_35654080/article/details/82526392