Seaborn中文教程

Seaborn介绍:

Seaborn属于Matplotlib的一个高级接口,为我们进行数据的可视化分析提供了极大的方便。 
博主是为了入门Kaggle比赛而学习的Seaborn,下面是博主的学习过程,希望可以和大家一起分享。

Step 1:安装Seaborn

首先确定你的电脑已安装以下应用 
- Python 2.7+ or Python 3 
- Pandas 
- Matplotlib 
- Seaborn 
- Jupyter Notebook(可选)

打开Jupyter Notebook, 过几秒钟会弹出网页窗口Home。 
Home

点击右侧的New,新建一个Notebook,弹出一个新的网页窗口,点击上方可命名文件。 
Seaborn

Step 2:加载库和数据文件

加载pandas、matplotlib、seaborn。 
这里写图片描述

这里提供了一个数据文件,下载链接为: 
Pokemon.csv

用pandas读取数据文件,并显示前五行。 
这里写图片描述

编译后的结果为一个列表。 
这里写图片描述

Step 3:Seaborn的绘图功能

Seaborn最大的优点之一在于其种类繁多的绘图功能,下面我们利用lmplot()函数,用一行代码来绘制散点图。

我们希望x轴显示Attack数据,y轴显示Defense数据,则可以编写代码。 
这里写图片描述

事实上seaborn并没有专门用来绘制散点图的功能,实际上我们用它来拟合和绘制回归线。 
"<code这里写图片描述” title=”“>

幸运的是,我们可以通过设置函数的参数来得到我们想要的散点图。用fit_reg = False 移去回归线,用hug参数来用不同颜色显示Pokemon进化阶段的信息。 
这里写图片描述

即刻得到散点图: 
这里写图片描述

从散点图可以看出,所有的数据点都分布在数轴的正半轴,然而散点图的数轴从负数开始的,我们可以对它进行改进。

Step 4:用Matplotlib定制

虽然Seaborn是Matplotlib的一个高级接口,但是我们有时候也需要用到Matplotlib。其中包括设置数轴的范围。

我们利用Matplotlib的ylim()和xlim()函数来设置数轴的范围。 
这里写图片描述

可以得到只显示正部分的散点图。 
这里写图片描述

Step 5:Pandas的作用

尽管这是一个Seaborn教程,pandas依然在实际应用中起到了十分重要的作用。

下面我们根据Pokemon的攻击数据来绘制箱形图。 
这里写图片描述

得到的箱形图: 
这里写图片描述

很好,这是一个良好的开端,但是我们可以移除不需要的几列数据。

  • 移除掉Total,因为我们有独立的统计数据。
  • 移除掉Stage跟Legendary,因为它们不是攻击统计数据。

    我们可以创建一个新的数据集stats_df,满足我们上述的要求。 
    这里写图片描述

得到了一个改进了的箱形图。 
这里写图片描述

Step 6: Seaborn 主题

Seaborn的另一个好处就是其恰到好处、开箱即用的风格主题。其默认的主题为“darkgrid”

下一步,我们把主题改为“whitegrid”来创建一个小提琴图

  • 小提琴图常常作为箱形图的替代
  • 小提琴图通过小提琴的厚度展示了数据的分布,而不仅仅是总结数据。

    根据Pokemon的主要类型,我们可以将Attack数据的分布可视化。 
    这里写图片描述

可以得到小提琴图,x轴显示的是Pokemon的Type1,y轴显示的是不同Pokemon的攻击数值。 
这里写图片描述

我们很容易就可以看出,Dragon类型常常具备高攻击值,但是不同个体间的差异也很大。

Step 7: 调色盘

Seaborn可以根据我们的需求,来设置颜色。我们可以创建一个python命令列表,用颜色的十六进制数值来设置。数值可以在Bulbapedia中寻找。

这里写图片描述

就能得到一个颜色重新设置过的小提琴图。 
这里写图片描述

为了能够让数据文件中的151个Pokemon都能够在图中简单展示,我们可以用群集图 swarm plot达到这一目的。 
这里写图片描述

可以得到151个数据点在群集图上的分布,不同点代表不同的Pokemon。 
这里写图片描述

Step 8: 图形重叠

我们已经绘制出了小提琴图和群集图,Seaborn允许我们将这两张图整合在一张图上,步骤如下:

  • 首先,我们用Matplotlib设置图形比例。
  • 然后,我们绘制小提琴图,用inner = None将小提琴中间的木杆移去。
  • 接着,我们绘制群集图,并将数据点的颜色变为黑色。
  • 最后,我们可以用Matplotlib设置一个标题。

这里写图片描述

其中alpha为透明度。 
编译后可以得到如下图形。 
这里写图片描述

现在我们可以清晰的看到不同Pokemon的攻击值了。那么我们怎么看其他的数值呢?

Step 9: 融合数据

为了展现其他的数据,我们当然可以重复以上的步骤,绘制多张图。但是我们同样也可以在一张图上表示所有的数据,这时候pandas就派上用场了。

我们可以利用pandas的melt()函数来将一些数据进行融合,这样就可以在不同Pokemon之间直接进行比对,melt()需要导入3个参数,分别为:

  1. 需要融合的数据列表
  2. 需要保留的ID变量,其他变量将会被Pandas融合。
  3. 融合而成的新变量的名字。

这里写图片描述

显示前五行的数据可以看到,六列数据已经融合成为一列Stat,数值在value一列中显示。而实际上Stat已经包含了原来列表中的六列数据。 
这里写图片描述

我们为已经融合的数据列表melted_df绘制群集图。 
这里写图片描述

就可以得到如下的群集图。x轴为Stat中融合的六个变量,y轴为Stat的值,不同颜色代表不同的Pokemon Type 1。 
这里写图片描述

这张图表有一些细节需要完善:

  1. 扩大图表。
  2. 使用split = True 来分隔色调。
  3. 使用我们自定义的颜色。
  4. 调整y轴的范围
  5. 将图例放在右侧。 
    这里写图片描述

    即可得到一个已经细节完善后的图表。 
    这里写图片描述

Step 10: 迷你画廊

10.1-Heatmap 
Heatmap可以帮助可视化矩阵状的数据。 
这里写图片描述

这里写图片描述

10.2-Histogram 
Histogram能够绘制变量的数值分布。 
这里写图片描述

可以清楚的看到Pokemon的攻击值的分布。 
这里写图片描述

10.3-Bar Plot 
条形图可以帮助分类变量的可视化。 
这里写图片描述

可以清楚的看到不同类型的Pokemon的数量。 
这里写图片描述

10.4-Factor Plot 
Factor plots能够根据类别分离图表。 
这里写图片描述

可以得到根据Stage分离的三个图表,分别用不同颜色的点表示不同的Pokemon。 
这里写图片描述

10.5-Density Plot 
密度图显示的是两个变量之间的分布。 
这里写图片描述

曲线越密集的地方说明两个变量的关系越近,越稀疏的地方说明关系越远。 
这里写图片描述

10.6-Joint Distribution Plot 
联合分布图将散点图和直方图的信息结合起来,提供双变量分布的详细信息。 
这里写图片描述

这里写图片描述

这里只是介绍了Seaborn常用的绘图功能,还有更强大的功能Example gallery需要我们去学习,去探索。

        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
            </div>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 目录 1. 目录 2 2. 绘图函数Plotting functions 4 2.1. 可视化的统计关系Visualizing statistical relationships 4 2.1.1. 用散点图联系变量Relating variables with scatter plots 4 2.1.2. 强调线条图的连续性Emphasizing continuity with line plots 10 2.1.3. 显示与切面的多个关系Showing multiple relationships with facets 21 2.2. 分类数据绘图Plotting with categorical data 24 2.2.1. 分类散点图Categorical scatterplots 26 2.2.2. 分类观测值分布Distributions of observations within categories 31 2.2.3. 分类统计估计Statistical estimation within categories 37 2.2.4. 对“wide-form”数据作图Plotting “wide-form” data 41 2.2.5. 显示与facet的多个关系Showing multiple relationships with facets 43 2.3. 可视化数据集的分布Visualizing the distribution of a dataset 44 2.3.1. 绘制单变量分布Plotting univariate distributions 45 2.3.2. 绘制二元分布Plotting bivariate distributions 51 2.3.3. 在数据集中可视化成对关系Visualizing pairwise relationships in a dataset 55 2.4. 可视化线性关系Visualizing linear relationships 57 2.4.1. 函数绘制线性模型Functions to draw linear regression models 58 2.4.2. 拟合不同种类的模型Fitting different kinds of models 61 2.4.3. 在其他变量上的情况Conditioning on other variables 68 2.4.4. 控制图表的大小和形状Controlling the size and shape of the plot 71 2.4.5. 在其他上下文中绘制回归图Plotting a regression in other contexts 73 3. 多图网格Multi-plot grids 76 3.1. 构建结构化的多图网格Building structured multi-plot grids 76 3.2. 有条件的小倍数Conditional small multiples 77 3.3. 使用定制函数Using custom functions 86 3.4. 绘制成对的数据关系Plotting pairwise data relationships 90 4. 绘图美学Plot aesthetics 99 4.1. 控制图表美学Controlling figure aesthetics 99 4.1.1. Seaborn图表风格Seaborn figure styles 101 4.1.2. 删除轴上的小凸起Removing axes spines 104 4.1.3. 临时设置图表样式Temporarily setting figure style 105 4.1.4. 覆盖Seaborn样式的元素Overriding elements of the seaborn styles 106 4.1.5. 缩放图表元素Scaling plot elements 108 4.2. 选择调色板Choosing color palettes 111 4.2.1. 创建颜色调色板Building color palettes 111 4.2.2. 定性调色板Qualitative color palettes 112 4.2.3. 连续调色板Sequential color palettes 116 4.2.4. 不同颜色的调色板Diverging color palettes 122 4.2.5. 设置默认调色板Setting the default color palette 124 5. 教程中的数据集 125
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值