版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
Seaborn绘图表分类
- 分类图:柱状图barplot、箱线图boxplot、小提琴图violinplot、散点图(stripplot、swarmplot)、以及分面网格(FacetGrid)分类图catplot。
- 关联图:散点图scatterplot、线图lineplot、以及分面网格(FacetGrid)关联图relplot。
- 分布图:单变量分布图distplot、密度图kdeplot。
- 矩阵图:热力图heatmap、聚类图clustermap。
- 回归图:线性回归图regplot和分面网格(FacetGrid)线性回归图lmplot。
- 分面网格图:FacetGrid。
准备工作
#准备工作
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
import numpy as np
import pandas as pd
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
#seaborn中显示中文
sns.set_style('darkgrid',{'font.sans-serif':['SimHei','Arial']})
#去除部分警告
import warnings
warnings.filterwarnings('ignore')
Seaborn内置数据集
https://github,com/mwaskom/seaborn-data
seaborn.load_dataset(name,cache=True,data_home=None,**kws)
- name:参数是数据集的名字,https://github,com/mwaskom/seaborn-data 定义数据集名。
- cache:参数是否提供缓存。
- data_home:参数是指定缓存路径,默认当前用户home下的seaborn-data目录中。
- sns.get_dataset_names():获得数据集名字。
下载数据
- 下载单个数据集
#下载数据
titanic=sns.load_dataset('titanic',cache=True)
获取全部数据集名称
#用列表形式返回github上的数据名字
names = sns.get_dataset_names()
print(names)
-------------------------------------------------------------------------
['anscombe', 'attention', 'brain_networks', 'car_crashes', 'diamonds', 'dots', 'exercise', 'flights', 'fmri', 'gammas', 'iris', 'mpg', 'planets', 'tips', 'titanic']
- 下载全部数据集
#下载全部数据集
for i in names:
sns.load_dataset(i)
虽然Matplotlib也可以绘图,但是相较而言seaborn更为美观
#先运行上面的,后运行下面的,分开运行
sns.set()
plt.bar([1,2,3,4,5],[3,6,9,2,5])
结果:
现在更加细致的了解一下sns.set吧
help(sns.set)
结果:
背景
可以知道背景有几种模式:‘darkgrid’,‘whitegrid’,‘dark’,‘white’,‘ticks’。默认为darkgrid模式。就是上面那个图的背景样式。
whitegrid:白色网格
sns.set_style('whitegrid')
plt.bar([1,2,3,4,5],[3,6,9,2,5])
结果:
white:白色
sns.set_style('white')
plt.bar([1,2,3,4,5],[3,6,9,2,5])
结果:
ticks:这个与white只有一点点不同,显示了横轴的齿锯
sns.set_style('ticks')
plt.bar([1,2,3,4,5],[3,6,9,2,5])
结果:
我们还可以消掉边框sns.despine()
- #去除图脊,默认去除上边和右边
sns.set_style('white')
plt.bar([1,2,3,4,5],[3,6,9,2,5])
sns.despine()#去除图脊,默认去除上边和右边
结果:
我们也可以去掉其它的边,强调下上下左右是top,bottom,left,right
sns.set_style('white')
plt.bar([1,2,3,4,5],[3,6,9,2,5])
sns.despine(left = True,bottom = True)
结果:
当然也可以去掉坐标轴数字
sns.set_style('white')
plt.bar([1,2,3,4,5],[3,6,9,2,5])
sns.despine(left = True,bottom = True)
#去除横纵坐标数字,设置为空
plt.xticks([])
plt.yticks([])
结果:
来个标题
- Matplotlib中显示中文的语句在这里并不适用哦!
sns.set_style('darkgrid',{'font.sans-serif':['SimHei','Arial']})
plt.bar([1,2,3,4,5],[3,6,9,2,5])
plt.title("柱状图")
结果:
现在来看看sns.set_context
- 可以用它来设置图形内部框和底色。
- 有四种’paper’,‘notebook’,‘talk’,‘poster’。
help(sns.set_context)
结果:
'paper’风格下的图片
sns.set_style('darkgrid',{'font.sans-serif':['SimHei','Arial']})
sns.set_context("paper")
plt.bar([1,2,3,4,5],[3,6,9,2,5])
plt.title("柱状图")
结果:
poster风格下的图
sns.set_style('darkgrid',{'font.sans-serif':['SimHei','Arial']})
sns.set_context("poster")
plt.bar([1,2,3,4,5],[3,6,9,2,5])
plt.title("柱状图")
结果:
我们可以查看当前参数
- context当前参数
sns.plotting_context()
结果:
2. poster风格下默认参数
sns.plotting_context(context='poster')
结果:
我们可以通过修改参数来设置
sns.set_context('poster',font_scale=1.5,rc={"lines.linewidth":5.5})
plt.bar([1,2,3,4,5],[3,6,9,2,5])
plt.title("柱状图")
结果:
是不是与原始的’poster’风格的图片不一样了
Seaborn调色板
- 在seaborn中颜色主要分为连续渐变色板和离散渐变色板。
- 在分类色板中,主要用color_palette()函数:
- color_palette()能传入任何Matplotlib所支持的颜色,不写入颜色则为默认参数
- set_palette()设置所有图的颜色
- 6个默认的颜色循环主题:deep、muted、pastel、bright、dark、colorblind。
color_palette方法返回默认的调色板信息
current_palette = sns.color_palette()
print(current_palette)
获取当前调色板样式
sns.palplot(current_palette)
结果:
我们这时画个柱状图会发现,是这调色板上的颜色
sns.barplot([1,2,3],[4,5,6],[9,6,3])
结果:
help(sns.palplot)
结果:
已知有6个默认的颜色循环主题:deep、muted、pastel、bright、dark、colorblind,我们来看几个
sns.palplot(sns.color_palette("bright"))
结果:
sns.palplot(sns.color_palette("muted"))
结果:
sns.palplot(sns.color_palette("pastel"))
结果:
发现这几个大多是透明度等方面的差别
使用自定义颜色,构造颜色版
color=['red','orange','pink','yellow','purple','blue','green']
print(sns.color_palette(color))
sns.palplot(sns.color_palette(color))
结果:
我们还可以有渐变的调色板
sns.palplot(sns.color_palette("Blues"))
结果:
我们可以规定展示给我们看的颜色的数量
sns.palplot(sns.color_palette("Oranges",10))
结果:
获取全部的调色板的名称
我们随便敲,报错信息中有一大块,是seaborn中所有能提供的调色板
sns.palplot(sns.color_palette("1123456"))
结果:
'r’可以将颜色倒过来排序
sns.palplot(sns.color_palette("Oranges_r",10))
结果:
颜色还可以组合渐变,如黄色与绿色组合
sns.palplot(sns.color_palette("YlGn"))
结果:
下面来使用调色板吧
- 个别图使用色系
sns.barplot([1,2,3],[3,8,5],[4,5,6],palette=sns.color_palette('YlGn'))
结果:
2. 全局设置色系
sns.set_palette("YlGn")
sns.barplot([1,2,3],[4,5,6],[9,6,3])
结果:
我们可以自己调整调色板的亮度、饱和度等
sns.palplot(sns.color_palette("hls",15))
结果
下面改变下亮度和饱和度
sns.palplot(sns.hls_palette(15,l=0.3,s=0.9))
结果:
我们还可以交互式地进行颜色的调试
- 离散的颜色
#一个交互式的方法
sns.choose_cubehelix_palette()
结果:
2. 渐变的颜色
sns.choose_cubehelix_palette(as_cmap=True)
结果: