博客地址:http://www.cnblogs.com/yudanqu/python
Seaborn是对matplotlib的extend,是一个数据可视化库,提供更高级的API封装,在应用中更加的方便灵活。下面我简单介绍一下他的用法,实际应用的时候,能够直接从文档中查找这个库,这时候使用就很快捷了。dom
提要:一、直方图和密度图 二、柱状图和热力图 三、设置图形显示效果 四、调色功能
老样子,首先将使用它所须要的库导入进来,固然,其中包括numpy之类的是为了演示它的功能才导入的,你们要先理解一下每一个库的做用。函数
1 import numpy as np 2 import pandas as pd 3 import matplotlib.pyplot as plt 4 from pandas import Series,DataFrame 5 import seaborn as sns
若是在交互式环境中,能够经过%matplotlab来解决每次经过plt.show()来显示图像(本人在ipython中,貌似jupyter中%matplotlib inline等等)post
1 s1 = Series(np.random.randn(1000)) # 生成1000个点的符合正态分布的随机数 2 plt.hist(s1) # 直方图,也能够经过plot(),修改里面kind参数实现 3 s1.plot(kind='kde') # 密度图
1 sns.distplot(s1,hist=True,kde=True,rug=True) # 前两个默认就是True,rug是在最下方显示出频率状况,默认为False 2 # bins=20 表示等分为20份的效果,一样有label等等参数 3 sns.kdeplot(s1,shade=True,color='r') # shade表示线下颜色为阴影,color表示颜色是红色 4 sns.rugplot(s1) # 在下方画出频率状况
给出两种方式经过最基本的方式画出来的效果,怎么样,是否是发现seaborn很强大。spa
(1)下载实验数据:code
1 df = sns.load_dataset('flights') # 在线下载一个数据用于实验,在sns.load_dataset()函数里有不少的数据,想了解更多的能够到GitHub中找到源码,你就会很清楚了
咱们能够先看一下里面的数据,能够看到,这是一个航空的数据,里面有年、月和乘客数量,接下来咱们就要在这份数据上进行分析。blog
(2)咱们能够经过透视表来先对这份数据进行一下处理:ip
1 df = df.pivot(index='month',columns='year',values='passengers') # 生成一个透视表,获得一个以年、月为轴的二维数据表
你们能够本身试一下,这样生成的结果是以年为columns,以月为index,表内数据为对应的乘客数量。文档
(3)绘制柱状图get
1 s = df.sum() 2 # 经过matplotlib绘出图形 3 s.plot(kind='bar') 4 # 经过seaborn绘出图形 5 sns.barplot(x=s.index,y=s.values)
(4)绘制热力图
1 df.plot() # 线性的显示数据状况 2 sns.heatmap(df) # 生成热力图 3 # sns.heatmap(df,annot=True,fmt='d') # annot参数是指显示数据,fmt='d'是指以整数形式显示
1 x = np.linspace(0,14,100) 2 y1 = np.sin(x) 3 y2 = np.sin(x+2)*1.25 4 def sinplot(): 5 plt.plot(x,y1) 6 plt.plot(x,y2) 7 8 sinplot() # 以matplotlib显示,生成两个函数图像
1 # seaborn的5种装饰风格 2 styles = ['darkgrid','dark','white','whitegrid','tricks'] # 颜色表明背景颜色,grid表明是否有网格 3 sns.set_style(style[0]) # 进行装饰,括号内能够直接写装饰风格 4 sinplot() # 通过修饰以后的图像 5 6 sns.axes_style() # 显示当前主题的内容,这些数据均可以修改微调 7 # 更改的时候就将其信息的以字典形式复制到set_style()里,当作参数来修改(注意是以字典的形式) 8 sns.set() # 设置风格为空,即清空本身定义的,恢复到默认的时候
1 context = ['paper','notebook','talk','poster'] # seaborn自己定义好的 2 sns.set_context('paper',rc={'grid.linewidth':3.0}) # rc参数 3 sinplot() 4 5 sns.plotting_context() # 显示出当前状态的数据 6 sns.set() # 恢复到默认
图像貌似同样,但并非没有成功,只是变化比较细微,真正用到的时候就能够体会到了。
1 # 先绘制一个图像 2 def sinplot1(): 3 x = np.linspace(0,14,100) 4 plt.figure(figsize=(8,6)) # 图像比较小时,经过这个函数更改大小 5 for i in range(4): 6 plt.plot(x,np.sin(x+i)*(i+0.75),label='sin(x+%s)*(%s+0.75)' % (i,i)) 7 plt.legend() 8 sinplot1()
1 # 引入seaborn 2 sns.color_palette() # 使用调色板 3 # 不传入参数返回当前使用的调色板(RGB) 4 sns.palplot(sns.color_palette()) # 画出调色板,参数为上面的调色板
1 pal.style = ['deep','nuted','pastel','bright','dark','colorblind'] # seaborn默认定义的调色板 2 3 # 第一种设置画板方式 4 sns.set_palette(sns.color_palette('dark')) # 设置色板 5 sns.set() # 恢复默认风格 6 7 # 第二种设置画板方式,而且最后恢复到默认 8 with sns.color_palette(): 9 sinplot1() # 在内部调整画板输出图形,当with结束时,则恢复默认
1 # 默认提供的色板数量是固定的,若是图像是更多的函数,那么颜色将循环色板中的风格。若是想不使他颜色有相同,能够经过sns.color_palette()来修改 2 sns.color_palette([(0.5,0.2,0.6),(0.3,0.3,0.4)]) # 由于色板是以列表的形式存储的,里面的每种风格以元组的形式存在因此须要用[()] 3 4 # 第二种增长色板颜色的方法 5 sns.color_palette('hls',8) # hls方法,后面写参数8,即生成有8种不一样颜色的色板
做者:渔单渠(yudanqu)