数据处理之可视化之Seaborn

  • A+
所属分类:python数据分析
摘要这一篇文章是上一篇matplotlib的后续篇,我们会使用seaborn来进行图像的美化操作。在这里记录一下seaborn的常用用法。

Seaborn介绍

之前我们学习了Matplotlib的一些内容,但是使用Matplotlib调出非常漂亮的效果时,往往会伤透脑筋,非常麻烦。

Seaborn 基于 Matplotlib 核心库进行了更高级的 API 封装,可以让你轻松地画出更漂亮的图形。而 Seaborn 的漂亮主要体现在配色更加舒服、以及图形元素的样式更加细腻。

Seaborn的安装

pip install seaborn

如果上述命令无法安装,可以使用下面的命令进行安装

sudo pip install git+https://github.com/mwaskom/seaborn.git

Seaborn基础

使用seaborn来优化图像操作起来是很方便的。下面我们来对比一下优化前和优化后。

  1. x = np.linspace(0, 1,100)
  2. fig = plt.figure()
  3. ax = fig.add_subplot(1,1,1)
  4. ax.set_title(u'This is Title')
  5. # 四个参数分别表示x,y轴数据,'b--'表示颜色是蓝色样式是虚线,最后一个表示标签,支持LaTex
  6. ax.plot(x, x ** 2, 'b.', label=r'$y = x^{2}$')
  7. # 自动生成图例
  8. ax.legend()
  9. # 设置图像x,y轴的范围,都是从0-1
  10. ax.axis([0, 1, 0, 1])
  11. fig.show()
数据处理之可视化之Seaborn

下面我们来进行优化。优化的方式也是很简单的,只需要使用下面两步:

  1. import seaborn as sns # 导入 seaborn 模块
  2. sns.set()

下面看一下完整的代码

  1. import seaborn as sns # 导入 seaborn 模块
  2. sns.set()
  3. x = np.linspace(0, 1,100)
  4. fig = plt.figure()
  5. ax = fig.add_subplot(1,1,1)
  6. ax.set_title(u'This is Title')
  7. # 四个参数分别表示x,y轴数据,'b--'表示颜色是蓝色样式是虚线,最后一个表示标签,支持LaTex
  8. ax.plot(x, x ** 2, 'b.', label=r'$y = x^{2}$')
  9. # 自动生成图例
  10. ax.legend()
  11. # 设置图像x,y轴的范围,都是从0-1
  12. ax.axis([0, 1, 0, 1])
  13. fig.show()
数据处理之可视化之Seaborn

可以看到背景变成了浅灰色的网格,字体也稍微做了调整。

我们在上面的sns.set()使用了默认的参数,分别如下:

  1. sns.set(context='notebook', style='darkgrid', palette='deep', font='sans-serif', font_scale=1, color_codes=False, rc=None)

其中:

  • context='' 参数控制着默认的画幅大小,分别有 {paper, notebook, talk, poster} 四个值。其中,poster > talk > notebook > paper。
  • style='' 参数控制默认样式,分别有 {darkgrid, whitegrid, dark, white, ticks}
  • palette='' 参数为预设的调色板。分别有 {deep, muted, bright, pastel, dark, colorblind} 等。
  • 剩下的 font='' 用于设置字体,font_scale= 设置字体大小,color_codes= 不使用调色板而采用先前的 'r' 等色彩缩写。

在这里我就不一一去演示了。

下面我们来看几个常用的Seaborn的API

seaborn.lmplot

seaborn.lmplot()是一个非常有用的方法,它会在绘制二维散点图时,自动完成回归拟合。

  1. import numpy as np
  2. import pandas as pd
  3. from pandas import Series,DataFrame
  4. # 载入绘图模块
  5. import matplotlib.pyplot as plt
  6. import seaborn as sns
  7. # 创建数据
  8. data_x = np.arange(1,100,2)
  9. data_y = 2*data_x+np.random.normal(10,30,len(data_x))
  10. data = DataFrame({'x': data_x, 'y': data_y})
  11. # 绘图
  12. sns.lmplot(x='x', y='y',data=data)
  13. plt.show()

 

数据处理之可视化之Seaborn

可以看到绘制出的图是自带了回归的。

seaborn.PairGrid

seaborn.PairGrid()可以用来查看两个维度数据之间的关系,用处当然也非常多了。比如,方便我们在数据分析过程中找出强关联特征

  1. import numpy as np
  2. import pandas as pd
  3. from pandas import Series,DataFrame
  4. # 载入绘图模块
  5. import matplotlib.pyplot as plt
  6. import seaborn as sns
  7. # 创建数据
  8. data_1 = np.arange(1,100,2)
  9. data_2 = 2*data_x+np.random.normal(10,30,len(data_1))
  10. data_3 = np.random.random(len(data_1))
  11. col = np.random.choice(['1a','2b','3c'],len(data_1)) #这个用来分类
  12. data = DataFrame({'x': data_1, 'y': data_2,'z':data_3,'col':col})
  13. # 绘图
  14. sns.PairGrid(data=data).map(plt.scatter)
  15. plt.show()
数据处理之可视化之Seaborn

可以看到自动将3个维度的数值进行两两配对,绘制出9张散点图,并且我们还可以加上颜色,按照分类来绘制

  1. import numpy as np
  2. import pandas as pd
  3. from pandas import Series,DataFrame
  4. # 载入绘图模块
  5. import matplotlib.pyplot as plt
  6. import seaborn as sns
  7. # 创建数据
  8. data_1 = np.arange(1,100,2)
  9. data_2 = 2*data_x+np.random.normal(10,30,len(data_1))
  10. data_3 = np.random.random(len(data_1))
  11. col = np.random.choice(['1a','2b','3c'],len(data_1)) #这个用来分类
  12. data = DataFrame({'x': data_1, 'y': data_2,'z':data_3,'col':col})
  13. # 绘图
  14. sns.PairGrid(data=data,hue='col').map(plt.scatter)
  15. plt.show()
  数据处理之可视化之Seaborn

seaborn.PairGrid

最后我们来看一下绘制单变量和双变量的组合个图。

  1. import numpy as np
  2. import pandas as pd
  3. from pandas import Series,DataFrame
  4. # 载入绘图模块
  5. import matplotlib.pyplot as plt
  6. import seaborn as sns
  7. # 创建数据
  8. data_x = np.arange(1,100,2)+np.random.normal(5,20,50)
  9. data_y = 2*data_x+np.random.normal(10,30,len(data_x))
  10. data = DataFrame({'x': data_x, 'y': data_y})
  11. # 绘图
  12. sns.JointGrid(x='x', y='y',data=data).plot(sns.regplot,sns.distplot)
  13. plt.show()
 

代码最后的sns.JointGrid().plot()用于设置图形的样式,在这里我们将双变量设置为散点图,而上面和右边的单变量设置为直方图,于是就可以得到下面的效果了。

数据处理之可视化之Seaborn
  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: