我们本篇文章讲的数据可视化是面向开发人员的,是利用python中一些可视化库如:matplotlib或是seaborn通过对数据可视化,来分析数据表格中各维度间的关系或是数据分布的特性,从而有助于我们更好的理解数据,帮助我们进行下一步数据分析或是为数据建模提供方向。本篇文章的方法并非是面向用户做数据展示或面向企业做数据可视化,这种情况下大家可以尝试使用Echarts或Tableau等数据展示工具。本文将分为matplotlib可视化和seaborn可视化两个部分。

一、Matplotlib数据可视化

Matplotlib是一个Python的2D绘图库,开发者使用Matplotlib仅需要几行代码便可以轻松绘图,生成柱状图、散点图、折线图、盒图、琴图等。

首先,matplotlib的安装非常的简单,Windows环境下我们可以通过pip install matplotlib直接完成安装,而Linux环境可以使用sudo pip install matplotlib完成安装。接着我们使用import matplotlib.pyplot as plt导入matplotlib库,便可以开始绘图了。

完整的绘图程序如下所示,包括图例、坐标轴、取值范围、刻度值、标题、注解等内容。

程序1:

import numpy as np
import matplotlib.pyplot as plt
from pylab import *# 定义数据部分
x = np.arange(0., 10, 0.2)
y1 = np.cos(x)
y2 = np.sin(x)
y3 = np.sqrt(x)# 绘制 3 条函数曲线
plt.plot(x, y1, color='blue', linewidth=1.5, linestyle='-', marker='.', label=r'$y = cos{x}$')
plt.plot(x, y2, color='green', linewidth=1.5, linestyle='-', marker='*', label=r'$y = sin{x}$')
plt.plot(x, y3, color='m', linewidth=1.5, linestyle='-', marker='x', label=r'$y = \sqrt{x}$')# 坐标轴上移
ax = plt.subplot(111)
ax.spines['right'].set_color('none')     # 去掉右边的边框线
ax.spines['top'].set_color('none')       # 去掉上边的边框线# 移动下边边框线,相当于移动 X 轴
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))# 移动左边边框线,相当于移动 y 轴
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))# 设置 x, y 轴的取值范围
plt.xlim(x.min()*1.1, x.max()*1.1)
plt.ylim(-1.5, 4.0)# 设置 x, y 轴的刻度值
plt.xticks([2, 4, 6, 8, 10], [r'2', r'4', r'6', r'8', r'10'])
plt.yticks([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], [r'-1.0', r'0.0', r'1.0', r'2.0', r'3.0', r'4.0'])# 添加文字
plt.text(4, 1.68, r'$x \in [0.0, \ 10.0]$', color='k', fontsize=15)
plt.text(4, 1.38, r'$y \in [-1.0, \ 4.0]$', color='k', fontsize=15)# 特殊点添加注解
plt.scatter([8,],[np.sqrt(8),], 50, color ='m')  # 使用散点图放大当前点
plt.annotate(r'$2\sqrt{2}$', xy=(8, np.sqrt(8)), xytext=(8.5, 2.2), fontsize=16, color='#090909', arrowprops=dict(arrowstyle='->', connectionstyle='arc3, rad=0.1', color='#090909'))# 设置标题、x轴、y轴
plt.title(r'$the \ function \ figure \ of \ cos(), \ sin() \ and \ sqrt()$', fontsize=19)
plt.xlabel(r'$the \ input \ value \ of \ x$', fontsize=18, labelpad=88.8)
plt.ylabel(r'$y = f(x)$', fontsize=18, labelpad=12.5)# 设置图例及位置
plt.legend(loc='up right')
# plt.legend(['cos(x)', 'sin(x)', 'sqrt(x)'], loc='up right')# 显示网格线
plt.grid(True)    # 显示绘图
plt.show()

散点图、曲线图、折线图、灰度图、饼状图、箱图、琴图等常用图形的绘制,也非常的简单,程序如下所示:

程序2:

#散点图,是用来展示两个维度间的相关性
x = np.random.normal(size=1000)
y = np.random.normal(size=1000)
plt.scatter(x,y)

程序3:

#曲线图,观察某个变量的走势x = np.arange(-5,5,0.1)y = x ** 2plt.plot(x,y)y = np.random.normal(size=1000)

程序4:

#灰度图,查看某个维度的数据状况x = np.random.normal(size=1000)plt.hist(x, bins=100)

程序5:

#饼图,显示一个系列中各项的大小以及各项所占总和的比例import numpy as npimport matplotlib.pyplot as plt# x为数据, 根据数据在所有数据中所占的比例显示结果# labels设置每个数据的标签# autoper 设置每一块所占的百分比# explode 设置某一块或者很多块突出显示出来, 由上面定义的explode数组决定# shadow 设置阴影,这样显示的效果更好labels = ["SH", "BI", "SZ", "GD"]facts = [20, 10, 30, 40]explode = [0, 0, 0.02, 0]plt.axes(aspect = 1)plt.pie(x = facts, labels = labels, explode= explode, shadow= True)plt.show()

程序6:

#箱图#上边缘(Q3+1.5IQR)、下边缘(Q1-1.5IQR)、IQR=Q3-Q1#上四分位数(Q3)、下四分位数(Q1)#中位数#异常值#处理异常值时与3σσ标准的异同:统计边界是否受异常值影响、容忍度的大小plt.boxplot(y)

二、Seaborn数据可视化

Seaborn相较于matplotlib更加的方便、简单。因为Seaborn中自带了一些统计的包,它在画图的同时,会完成统计的拟合。而且Seaborn画图时的参数也更多,这样matplotlib可能很多行的代码,seaborn仅仅需要间的几行就能实现同样的效果。

Seaborn的安装也非常的简单,使用pip install seaborn直接安装即可,首先我们来介绍一些Seaborn中的基本绘图函数:折线图:plot()、散点图:lmplot()、柱状图:barplot()、联合分布图:jointplot()、琴图:violinplot()、箱式图:boxplot()、比较图:pairplot()等。常用的属性有hue:对数据按照不同的类型先做分组,再分别对每组数据绘图;col:用于多列数据都出现分组时;markers:用哪种符号对数据进行标注,Ci:是否开启置信区间;color、data、x、y等。

接下来我们通过两个案例来直观的比较一下seaborn和matplotlib的不同。

案例一:给定数据集航班乘客变化分析data = sns.load_dataset("flights"),利用柱状图分析乘客在一年中各月份的分布情况。

Matplotlib版本:

per_month_distribute = data.groupby('month').agg([np.mean, np.std])['passengers']_,axe=plt.subplots()plt.rcParams["figure.figsize"] = (12,8)print(per_month_distribute)plt.bar(range(12), per_month_distribute['mean'],color='cadetblue',label='average')#yerr:y坐标对应误差的正负值,ls=linestyle,lw=linewidthplt.errorbar(range(12), per_month_distribute['mean'],yerr=per_month_distribute['std'],ls='none',color='darkslategray', lw=5, label='error')plt.xticks(range(12),per_month_distribute.index,fontsize=15,rotation=45)#把X轴上的字体旋转45度,以免重叠plt.xlabel('Month of Year',fontsize=20)plt.ylabel('Passengers',fontsize=20)plt.legend([u"乘客量均值", u"乘客量标准差"],fontsize=15) #把label标注的内容显示出来plt.title(u'乘客在一年中各月份的分布',fontsize=25)axe.spines['top'].set_color(None)axe.spines['right'].set_color(None)plt.scatter(x,y)

Seaborn版本:

import seaborn as snssns.factorplot(x='month',y='passengers',data=data, kind='bar',size=8)

效果图:

案例二:给定数据集餐厅收取小费的情况:data = sns.load_dataset("tips"),绘制分组柱状图分析性别+抽烟的组合因素对慷慨度的影响。

Matplotlib版本:

tmp_data=data.groupby(['sex','smoker'])['tip'].agg([np.mean,np.std])width = 0.2_,axe=plt.subplots()plt.bar([1,2],tmp_data['mean'].loc['Male'],width=width, label='Male')plt.errorbar([1,2],tmp_data['mean'].loc['Male'],yerr = tmp_data['std'].loc['Male'], ls ='none',lw=4,color='darkblue',label=None)#画女性抽烟柱状图,X+0.2plt.bar([x+width for x in [1,2]],tmp_data['mean'].loc['Female'],width=width,label='Female',color='salmon')plt.errorbar([x+width for x in [1,2]],tmp_data['mean'].loc['Female'],yerr=tmp_data['std'].loc['Female'],ls='none',lw=4,color='darkred',label=None)plt.setp(axe, xticks=[1.1,2.1], xticklabels=['Yes','No'])  #设置横坐标参数plt.legend(fontsize=15)plt.xlabel('Smoker',fontsize=15)plt.ylabel('Tip',fontsize=15)plt.axis([0.7,2.7,0,5])   #移动坐标轴,[left,right,bottom,top],距离左右,上下边框的距离plt.title(u'性别+抽烟的组合因素对慷慨度的影响')

Seaborn版本:

sns.barplot(x='smoker',y='tip',data=tips,hue='sex')

效果图:

总结:通过上边的案例我们分别通过matplotlib和seaborn完成了数据可视化的操作,我么可以看到Seaborn封装的更好,使用起来更简单;但Matplotlib灵活性更高、功能也更加强大。学习Matplotlib和Seaborn更多的函数、图形的绘制,欢迎大家学习它们的官方手册,这里小编只是做了一个简单的常用整理。Matplotlib官方文档:http://www.matplotlib.org;

Seaborn官方手册:http://seaborn.pydata.org。

转载自磐创AI 已获授权

IELTS a bit

catastrophe n. 大灾难;大祸;惨败

ignorance n. 无知,愚昧;不知,不懂

bring ... to a standstill 使...停滞

in consequence 因此;结果

perimeter n. 周长;周界;[眼科]视野计

推荐阅读:

一大批历史精彩文章啦

【收藏版】长文详解基于并行计算的条件随机场

【珍藏版】长文详解python正则表达式

这些神经网络调参细节,你都了解了吗

谈谈我在自然语言处理入门的一些个人拙见

大数定律和中心极限定理的区别和联系

深度学习之卷积神经网络CNN理论与实践详解

深度学习之RNN、LSTM及正向反向传播原理

TreeLSTM Sentiment Classification

基于attention的seq2seq机器翻译实践详解

【干货】基于注意力机制的seq2seq网络


欢迎关注深度学习自然语言处理公众号,我会每天更新自己在机器学习深度学习NLPlinuxpython以及各种数学知识学习的一点一滴!再小的人也有自己的品牌!期待和你一起进步!

数据可视化详解+代码演练相关推荐

  1. 三、教你搞懂渐变堆叠面积图《手把手教你 ECharts 数据可视化详解》

    注:本系列教程需要对应 JavaScript .html.css 基础,否则将会导致阅读时困难,本教程将会从 ECharts 的官方示例出发,详解每一个示例实现,从中学习 ECharts . ECha ...

  2. python 读取地震道头数据_python地震数据可视化详解

    本文实例为大家分享了python地震数据可视化的具体代码,供大家参考,具体内容如下 准备工作: 在windows10下安装python3.7,下载参考源码到本地. 1. demo绘图测试 demo绘图 ...

  3. Python数据可视化详解

    数据可视化是一种将庞杂抽象的数据转化为直观易懂的图形的数据呈现技术,它能帮助我们快速把握数据的分布和规律,更加轻松地理解和探索信息.在当今这个信息爆炸的时代,数据可视化越来越受重视. 一.Matplo ...

  4. Python数据可视化详解(5/5)--------面积图、圆环图和Python里的极坐标

    面积图 import numpy as np import matplotlib.pyplot as pltx = [2,3,4,5,6,7] y = [4,5,1,2,5,2]plt.fill_be ...

  5. Python 交互式数据可视化详解

    数据分析离不开数据可视化.我们最常用的就是pandas,matplotlib,pyecharts.使用 Matplotlib 以各种绘图样式来可视化数据,但是Matplotlib 无法显示动态图,如果 ...

  6. json数据解析详解---代码每行进行分析

    2019独角兽企业重金招聘Python工程师标准>>> $(document).ready(function() { //注册全局的jQuqery对象 换句话说就是初始化jquery ...

  7. python机械臂仿真_VTK与Python实现机械臂三维模型可视化详解

    三维可视化系统的建立依赖于三维图形平台, 如 OpenGL.VTK.OGRE.OSG等, 传统的方法多采用OpenGL进行底层编程,即对其特有的函数进行定量操作, 需要开发人员熟悉相关函数, 从而造成 ...

  8. VTK与Python实现机械臂三维模型可视化详解

    三维可视化系统的建立依赖于三维图形平台, 如 OpenGL.VTK.OGRE.OSG等, 传统的方法多采用OpenGL进行底层编程,即对其特有的函数进行定量操作, 需要开发人员熟悉相关函数, 从而造成 ...

  9. 『ML笔记』HOG特征提取原理详解+代码

    HOG特征提取原理详解+代码! 文章目录 一. HOG特征介绍 二. HOG算法具体流程+代码 2.1. 图像灰度化和gamma矫正 2.2. 计算图像像素梯度图 2.3. 在8×8的网格中计算梯度直 ...

  10. 每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现

    Python 爬虫篇 - 爬取全国新冠肺炎疫情数据实例详解 效果图展示 第一章:疫情信息的下载与数据提取 ① 爬取页面数据到本地 ② json 字符串正则表达式分析 ③ 提取数据中的 json 字符串 ...

最新文章

  1. 本、硕、博的区别,只用两组图就解释清楚了
  2. 电脑c盘满了怎么办_电脑用久了C盘空间不够用怎么办?教你如何无损扩展C盘空间大小...
  3. Recyclerview设置间距
  4. Window10+Python3.5安装opencv
  5. python3 开发面试题(collections中的Counter)6.7
  6. 前端学习(2214):认识react(1)
  7. Spark GraphX算法 - PageRank算法
  8. ps语义分割_一键抠图,毛发毕现:这个GitHub项目助你快速PS
  9. sqlite3---终端操作
  10. 小废物在我面前痛不欲生……(图)
  11. 医院计算机网络信息安全与管理,医院信息安全管理制度网络版(全文完整版)...
  12. 如何得到信号的幅度谱和相位谱
  13. 晒晒自己写的C++小程序(初学,书上的题目)
  14. Win10应用设计的那些事儿
  15. Velodyne VLP16 激光雷达测试
  16. PDF文件如何在线分割
  17. 原创 | 大数据学习思维导图
  18. 教你免费且快速地搭建个人网站
  19. 3D视觉之深度相机方案
  20. 阿德莱德大学语言班成绩为C,阿德莱德大学语言课程入学要求

热门文章

  1. volist 自增序号 分页如何实现?
  2. UVa 11991 一道简单题
  3. 2013年值得我们学习的网页设计作品【系列二】
  4. 页面加载时序问题----BUG分析
  5. Altium Designer(九):DXF+DWG
  6. 异常连接导致的内存泄漏排查
  7. 原生js之同级元素添加移除class
  8. ros control
  9. 在cell中自定义分割线的小技巧
  10. 数学趣题——猴子吃桃问题