【python 可视化】2 seaborn笔记

Seaborn 基于matplotlib且数据结构与pandas统一的统计制图库

功能:

  • 计算多变量间关系的面向数据集接口
  • 可视化类别变量的观测与统计
  • 可视化单变量或多变量分布并与其子数据集比较
  • 控制线性回归的不同因变量并进行参数估计与作图
  • 对复杂数据进行易行的整体结构可视化
  • 对多表统计图的制作高度抽象并简化可视化过程
  • 提供多个内建主题渲染matpotlib的图像样式
  • 提供调色板工具生动再现数据

一般情况下跟matplotlib一起使用

目录

**********艺术化的图表控制

控制样式

扩展绘图

**********斑驳陆离的调色板

分类色板

使用圆形颜色系统

连续色板

cubehelix_palette()函数的连续调色板

使用light_palette() 和dark_palette()调用定制连续调色板

离散色板

**********分布数据集的可视化(---开始有丶用---)

 单变量分布

直方图

核密度估计(KDE) Kernel density estimaton

拟合参数分布

绘制双变量分布

 散点图

HexBin图

核密度估计

呈现数据集中成对的关系(可以用于单变量分析)

**********线性关系的可视化

绘制线性回归模型的函数

不同类型的模型拟合

控制绘制的大小和形状

在其他背景下绘制回归

**********分类数据的绘制

**********绘制数据网格


**********艺术化的图表控制

# seaborn 是第三方库,需要pip安装
import pandas as pd
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
# 生成一个含偏移的正弦图像
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)

# 直接使用matplotlib画图
sinplot()

使用seaborn控制画图样式

# 以下全是默认参数,可以不填
sns.set(context='notebook', style='darkgrid', palette='deep', font='sans-serif',
        font_scale=1, color_codes=True, rc=None)
sinplot()

        为了控制样式,使用axes_style()和set_style()函数。为了扩展绘图,请使用plotting_context()和set_context()函数。在这两种情况下,第一个函数返回一个参数字典,第二个函数则设置matplotlib默认属性。 

控制样式

# context:
    #darkgrid 黑色网格(默认)
    #whitegrid 白色网格
    #dark 黑色背景
    #white 白色背景
    #ticks 应该是四周有刻度线的白背景

# 控制样式
sns.axes_style() # 返回set_style函数的参数字典,如果需要传给set_index函数,所有的参数以字典的形式传给rc参数
sns.set_style() # 设置matplotlib默认属性
sns.set_style("whitegrid")
data = np.random.normal(size=(20, 6)) + np.arange(6) / 2
sns.boxplot(data=data)

# 修改底色
sns.set_style("dark")
sinplot()

f, ax = plt.subplots()
sns.violinplot(data=data)
# offset 两坐标轴离开距离;
sns.despine(offset=10, trim=True)

# despine 管理边框
# despine(fig=None, ax=None, top=True, right=True, left=False, bottom=False, offset=None,trim=False)
sns.set_style("whitegrid")
sns.boxplot(data=data, palette="deep")
sns.despine(left=True) # 删除左边边框
st = sns.axes_style("darkgrid")

# 设置临时图形样式(只对with块内的绘图函数起作用)
with sns.axes_style("darkgrid"):
    plt.subplot(211)
    sinplot()
plt.subplot(212)
sinplot(-1)

# 重置图形样式
sns.set()

扩展绘图

# 拓展绘图
sns.plotting_context() # 返回一个参数字典,设置字体、线条
sns.set_context() # 设置参数
# 设置线条粗细
# 按相对尺寸的顺序(线条越来越粗),分别是paper,notebook, talk, and poster
sns.set_context("paper")
plt.figure(figsize=(8,6))
sinplot()

 

# default 默认设置
sns.set_context("notebook")
plt.figure(figsize=(8,6))
sinplot()

**********斑驳陆离的调色板

        最重要的直接设置调色板的函数就是color_palette()。color_palette()允许任意的seaborn调色板或matplotlib的颜色映射(除了jet,你应该完全不使用它)。它还可以使用任何有效的matplotlib格式指定的颜色列表(RGB元组、十六进制颜色代码或HTML颜色名称)。返回值总是一个RGB元组的列表

        直接调用没有传入参数的color_palette()将返回默认的颜色循环。

        对应的函数set_palette()接受相同的参数,并为所有图设置默认的颜色循环。你也可以在with块中使用color_palette()来实现临时的更改调色板配置。

分类色板

分类色板(定性)是在区分没有固定顺序的数据时最好的选择。

在导入seaborn库后,默认的颜色循环被更改为一组六种颜色(最新版本已经更新为10种)。

# 默认颜色循环
current_palette = sns.color_palette()
sns.palplot(current_palette)

对应的RGB元组:

(0.2980392156862745, 0.4470588235294118, 0.6901960784313725)
(0.8666666666666667, 0.5176470588235295, 0.3215686274509804)
(0.3333333333333333, 0.6588235294117647, 0.40784313725490196)
(0.7686274509803922, 0.3058823529411765, 0.3215686274509804)
(0.5058823529411764, 0.4470588235294118, 0.7019607843137254)
(0.5764705882352941, 0.47058823529411764, 0.3764705882352941)
(0.8549019607843137, 0.5450980392156862, 0.7647058823529411)
(0.5490196078431373, 0.5490196078431373, 0.5490196078431373)
(0.8, 0.7254901960784313, 0.4549019607843137)
(0.39215686274509803, 0.7098039215686275, 0.803921568627451)

默认颜色主题共有六种不同的变化分别是:deep, muted, pastel, bright, dark, 和 colorblind。类似下面的方式直接传入即可。

current_palette = sns.color_palette("colorblind") # 直接传入对应的参数即可变化
sns.palplot(current_palette)

使用圆形颜色系统

当你有六个以上的分类要区分时,最简单的方法就是在一个圆形的颜色空间中画出均匀间隔的颜色(这样的色调会保持亮度和饱和度不变)。这是大多数的当他们需要使用比当前默认颜色循环中设置的颜色更多时的默认方案。

最常用的方法是使用hls的颜色空间,这是RGB值的一个简单转换。

sns.palplot(sns.color_palette("hls", 8))

当然,也可以使用hls_palette()函数来控制颜色的亮度和饱和。

sns.palplot(sns.hls_palette(8, l=.3, s=.8))
# l-亮度 lightness / s-饱和 saturation

由于人类视觉系统的工作方式,会导致在RGB度量上强度一致的颜色在视觉中并不平衡。比如,我们黄色和绿色是相对较亮的颜色,而蓝色则相对较暗,使得这可能会成为与hls系统一致的一个问题。

为了解决这一问题,seaborn为husl系统提供了一个接口,这也使得选择均匀间隔的色彩变得更加容易,同时保持亮度和饱和度更加一致。

sns.palplot(sns.color_palette("husl", 8))

使用xkcd颜色来命名颜色

xkcd包含了一套众包努力的针对随机RGB色的命名。产生了954个可以随时通过xdcd_rgb字典中调用的命名颜色。

plt.plot([0, 1], [0, 1], sns.xkcd_rgb["pale red"], lw=3)
plt.plot([0, 1], [0, 2], sns.xkcd_rgb["medium green"], lw=3)
plt.plot([0, 1], [0, 3], sns.xkcd_rgb["denim blue"], lw=3)

连续色板

调色板中第二大类称为“顺序”。这种颜色映射对应的是从相对低价值(无意义)数据到高价值(有意义)的数据范围。虽然有时候你会需要一个连续的离散颜色调色板,用他们像kdeplot()或者corrplot()功能映射更加常见(以及可能类似的matplotlib功能)。

Color Brewer的字典中就有一组很好的调色板。它们是以在调色板中的主导颜色(或颜色)命名的。

sns.palplot(sns.color_palette("Blues"))

就像在matplotlib中一样,如果您想要翻转渐变,您可以在面板名称中添加一个_r后缀。

sns.palplot(sns.color_palette("BuGn_r"))

seaborn还增加了一个允许创建没有动态范围的"dark"面板。如果你想按顺序画线或点,这可能是有用的,因为颜色鲜艳的线可能很难区分。

类似的,这种暗处理的颜色,需要在面板名称中添加一个_d后缀

sns.palplot(sns.color_palett
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值