python之seaborn画图库学习绘制常用的图

github地址:https://github.com/xiaoping1988/ping-ml

导入相关库

import seaborn as sbn
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

sbn.set(font_scale=1.7) #设置字体大小
## 5种主题风格,darkgrid、whitegrid、dark、white、ticks
#常用参数配置
#x,y,hue 数据集变量 变量名
#date 数据集 数据集名
#row,col 更多分类变量进行平铺显示 变量名
#col_wrap 每行的最高平铺数 整数
#estimator 在每个分类中进行矢量到标量的映射 矢量
#ci 置信区间 浮点数或None
#n_boot 计算置信区间时使用的引导迭代次数 整数
#units 采样单元的标识符,用于执行多级引导和重复测量设计 数据变量或向量数据
#order, hue_order 对应排序列表 字符串列表
#row_order, col_order 对应排序列表 字符串列表
#kind : 可选:point 默认, bar 柱形图, count 频次, box 箱体, violin 提琴, strip 散点,swarm 分散点 size 每个面的高度(英寸) 标量 aspect 纵横比 标量 orient 方向 "v"/"h" color 颜色 matplotlib颜色 palette 调色板 seaborn颜色色板或字典 legend hue的信息面板 True/False legend_out 是否扩展图形,并将信息框绘制在中心右边 True/False share{x,y} 共享轴线 True/False

主题颜色

## 默认6种颜色主题
sbn.palplot(sbn.color_palette())
## 获取超过默认6种的颜色
sbn.palplot(sbn.color_palette("hls", 10))
# 渐变色画板
# 由浅到深
sbn.palplot(sbn.color_palette("Blues"))
# 由深到浅,后面加'_r'
sbn.palplot(sbn.color_palette("Blues_r"))
sbn.palplot(sbn.color_palette("BuGn"))
sbn.palplot(sbn.color_palette("BuGn_r"))
# 色调线性变换
sbn.palplot(sbn.color_palette("cubehelix", 8))
sbn.palplot(sbn.color_palette("cubehelix_r", 8))

这里写图片描述

折线图

## 画子图,设定不一样的风格
def sinplot(flip=1):
    x = np.linspace(0, 14, 100)
    for i in range(1, 7):
        plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
plt.figure(figsize=(20,10)) 
sbn.set(font_scale=1.7)
with sbn.axes_style('dark'): ## 设置子图风格
    plt.subplot(211)
    sinplot()
sbn.set_style('ticks')
plt.subplot(212)
sinplot()

这里写图片描述

盒图

# 盒图
data = np.random.normal(size=(20, 6)) + np.arange(6) / 2
sbn.set_style('ticks')
sbn.set(font_scale=1.7)
plt.figure(figsize=(20,10))
plt.subplot(121)
sbn.boxplot(data=data)
sbn.despine() ## 去掉上边和右边的线
## 画超过默认6种颜色的图
plt.subplot(122)
data2 = np.random.normal(size=(20, 8)) + np.arange(8) / 2
sbn.boxplot(data=data2,palette=sbn.color_palette("Paired", 8))
plt.show()

这里写图片描述

盒图2

## 盒图
tips = sbn.load_dataset("tips")
plt.figure(figsize=(20,10))
sbn.set(font_scale=1.7)
plt.subplot(121)
sbn.boxplot(x="day", y="total_bill", hue="time", data=tips)
plt.subplot(122)
sbn.boxplot(x="total_bill", y="day", hue="time", data=tips)
plt.show()

这里写图片描述

小提琴图

data = np.random.normal(size=(20, 6)) + np.arange(6) / 2
sbn.set_style('ticks')
sbn.violinplot(data)
sbn.despine() ## 去掉上边和右边的线
plt.show()

这里写图片描述

小提琴图2

## 小提琴图
tips = sbn.load_dataset("tips")
plt.figure(figsize=(20,10))
sbn.set(font_scale=1.7)
plt.subplot(121)
sbn.violinplot(x="day", y="total_bill", hue="time", data=tips)
plt.subplot(122)
sbn.violinplot(x="day", y="total_bill", hue="time", data=tips,split=True)
plt.show()

这里写图片描述

小提琴图和蜂群图结合

## 小提琴图和蜂群图结合
tips = sbn.load_dataset("tips")
plt.figure(figsize=(20,10))
sbn.set(font_scale=1.7)
sbn.violinplot(x="day", y="total_bill", data=tips, inner=None)
sbn.swarmplot(x="day", y="total_bill", data=tips, color="w", alpha=.5)
plt.show()

这里写图片描述

直方图

# 直方图,观察单变量的分布
from scipy import stats, integrate
x = np.random.normal(size=100) # 高斯数据
sbn.distplot(x,bins=20,kde=False,fit=stats.gamma) # bins:数据分成多少份
plt.show()

这里写图片描述

散点图

# 散点图,观察两个变量之间的关系
mean, cov = [0, 1], [(1, 0.5), (0.5, 1)] # 均值,方差
data = np.random.multivariate_normal(mean, cov, 200) # 根据均值,方差生成数据
df = pd.DataFrame(data, columns=["x", "y"])
print(df.head())
print(df.mean())
plt.figure(figsize=(20,10))
sbn.set_style('darkgrid')
sbn.jointplot(x='x',y='y',data=df)
plt.show()

这里写图片描述

hex图

mean, cov = [0, 1], [(1, 0.5), (0.5, 1)] # 均值,方差
data = np.random.multivariate_normal(mean, cov, 1000) # 根据均值,方差生成数据
df = pd.DataFrame(data, columns=["x", "y"])
print(df.head())
print(df.mean())
sbn.set_style('white')
sbn.jointplot(x='x',y='y',data=df,kind="hex", color="k")
plt.show()

这里写图片描述

多特征,两两组合观察变量关系

# 多特征,两两组合观察变量关系
iris = sbn.load_dataset("iris")
sbn.pairplot(iris)
plt.show()

这里写图片描述

回归分析图绘制

# 回归分析图绘制
tips = sbn.load_dataset("tips")

print(tips.head())

plt.figure(figsize=(20,10))
sbn.set(font_scale=1.7)
#regplot()和lmplot()都可以绘制回归关系,推荐regplot()
plt.subplot(121)
sbn.regplot(x='total_bill',y='tip',data=tips)
## 添加浮动范围x_jitter
plt.subplot(122)
sbn.regplot(x='size',y='tip',data=tips,x_jitter=0.08)
plt.show()

这里写图片描述

蜂群图,多变量分析绘图

# 蜂群图,多变量分析绘图
tips = sbn.load_dataset("tips")
sbn.set(font_scale=1.7)
plt.figure(figsize=(20,15))
plt.subplot(221)
sbn.stripplot(x="day", y="total_bill", data=tips,jitter=True)
plt.subplot(222)
sbn.swarmplot(x="day", y="total_bill", data=tips)
plt.subplot(223)
sbn.swarmplot(x="day", y="total_bill", hue="sex",data=tips)
plt.subplot(224)
sbn.swarmplot(x="total_bill", y="day", hue="sex",data=tips)
plt.show()

这里写图片描述

柱状图

# 柱状图
tips = sbn.load_dataset("tips")
plt.figure(figsize=(20,10))
sbn.set(font_scale=1.7)
sbn.barplot(x="time", y="total_bill", hue="day", data=tips)
plt.show()

这里写图片描述

点图,查看趋势

# 点图,查看趋势
tips = sbn.load_dataset("tips")
plt.figure(figsize=(20,10))
sbn.set(font_scale=1.7)
sbn.pointplot(x="day", y="total_bill", hue="time", data=tips)
plt.show()

这里写图片描述

热力图

# 热力图
flights = sbn.load_dataset("flights")
print(flights.head())
plt.figure(figsize=(20,10))
flights = flights.pivot("month", "year", "passengers")
print (flights)
sbn.heatmap(flights,annot=True,fmt="d", linewidths=0.5, cmap="YlGnBu")
plt.show()

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值