• Python--Seaborn绘图和可视化--基本语法


      博客地址:http://www.cnblogs.com/yudanqu/

      Seaborn是对matplotlib的extend,是一个数据可视化库,提供更高级的API封装,在应用中更加的方便灵活。下面我简单介绍一下他的用法,实际应用的时候,可以直接从文档中查找这个库,这时候使用就很快捷了。

    提要:1、直方图和密度图
    
       2、柱状图和热力图
    
       3、设置图形显示效果
    
       4、调色功能

      老样子,首先将使用它所需要的库导入进来,当然,其中包括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

    1、直方图和密度图

      如果在交互式环境中,可以通过%matplotlab来解决每次通过plt.show()来显示图像(本人在ipython中,貌似jupyter中%matplotlib inline等等)

    # matplotlib

    1 s1 = Series(np.random.randn(1000)) # 生成1000个点的符合正态分布的随机数
    2 plt.hist(s1) # 直方图,也可以通过plot(),修改里面kind参数实现
    3 s1.plot(kind='kde') # 密度图

    # seaborn

    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很强大。

    2、柱状图和热力图

      (1)下载实验数据:

    1 df = sns.load_dataset('flights') # 在线下载一个数据用于实验,在sns.load_dataset()函数里有很多的数据,想了解更多的可以到GitHub中找到源码,你就会很清楚了

      我们可以先看一下里面的数据,可以看到,这是一个航空的数据,里面有年、月和乘客数量,接下来我们就要在这份数据上进行分析。

      (2)我们可以通过透视表来先对这份数据进行一下处理:

    1 df = df.pivot(index='month',columns='year',values='passengers') # 生成一个透视表,得到一个以年、月为轴的二维数据表

      大家可以自己试一下,这样生成的结果是以年为columns,以月为index,表内数据为对应的乘客数量。

      (3)绘制柱状图

    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'是指以整数形式显示

    3、设置图形显示效果

    (1)axes_style and set_style

    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() # 设置风格为空,即清空自己定义的,恢复到默认的时候

    (2)plotting_context() and set_context()

    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() # 恢复到默认

      图像貌似一样,但并不是没有成功,只是变化比较细微,真正用到的时候就可以体会到了。

    4、调色功能

    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)

      博客地址:http://www.cnblogs.com/yudanqu/

    作者:渔单渠 微信搜索“小田学Python”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    C#使用Xamarin开发Android应用程序 -- 系列文章
    stealwatch里的安全功能——ETA结果会显示加密套件以及key长度,还有流量大小(例如41MB)
    钟平---逻辑英语的语法讲解
    python dpkt 解析 pcap 文件
    TOR的十个最好的替代工具
    tf.expand_dims 来增加维度
    安天透过北美DDoS事件解读IoT设备安全——Mirai的主要感染对象是linux物联网设备,包括:路由器、网络摄像头、DVR设备,入侵主要通过telnet端口进行流行密码档暴力破解,或默认密码登陆,下载DDoS功能的bot,运行控制物联网设备
    使用深度学习检测TOR流量——本质上是在利用报文的时序信息、传输速率建模
    利用神经网络进行网络流量识别——特征提取的方法是(1)直接原始报文提取前24字节,24个报文组成596像素图像CNN识别;或者直接去掉header后payload的前1024字节(2)传输报文的大小分布特征;也有加入时序结合LSTM后的CNN综合模型
    算法培训
  • 原文地址:https://www.cnblogs.com/yudanqu/p/9031869.html
Copyright © 2020-2023  润新知