04_2Python绘图_seaborn

来源:互联网 发布:软件定义世界 百科 编辑:程序博客网 时间:2024/06/05 19:14

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 npimport pandas as pdfrom scipy import statsimport matplotlib.pyplot as pltimport 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)

output_19_1.png-8.3kB

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

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

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


注:部分例子来自于小象学院Robin课程

0 0