Python数据可视化编程通过Matplotlib创建散点图代码示例


Posted in Python onDecember 09, 2017

Matplotlib简述:

Matplotlib是一个用于创建出高质量图表的桌面绘图包(主要是2D方面)。该项目是由JohnHunter于2002年启动的,其目的是为Python构建一个MATLAB式的绘图接口。如果结合PythonIDE使用比如PyCharm,matplotlib还具有诸如缩放和平移等交互功能。它不仅支持各种操作系统上许多不同的GUI后端,而且还能将图片导出为各种常见的矢量(vector)和光栅(raster)图:PDF、SVG、JPG、PNG、BMP、GIF等。此外,matplotlib还有许多插件工具集,如用于3D图形的mplot3d以及用于地图和投影的basemap。

准备数据:从文本文件中解析数据

本文使用的数据主要包含以下三种特征:每年获得的飞行常客里程数,玩视频游戏所耗时间百分比,每周消费的冰淇淋公升数。其中分类结果作为文件的第四列,并且只有3、2、1三种分类值。

飞行里程数  游戏耗时百分比  冰淇淋公升数  分类结果
 40920  8.326976  0.953952  3
 14488  7.153469  1.673904  2 
 26052  1.441871  0.805124  1
......  ......  ......  ......

上述特征数据的格式经过file2matrix函数解析处理之后,可输出为矩阵和类标签向量。

将文本记录转换为Numpy的解析程序:

Python数据可视化编程通过Matplotlib创建散点图代码示例

使用file2matrix读取文件数据,必须确保待解析文件存储在当前的工作目录中。导入数据之后,简单检查一下数据格式:

Python数据可视化编程通过Matplotlib创建散点图代码示例

分析数据:使用Matplotlib创建散点图

编辑kNN.py文件,引入matplotlib,调用matplotlib的scatter绘制散点图。

import matplotlib
import matplotlib.pyplot as plt
def file2matrix(filename):
......
return returnMat,classLabelVector
datingDataMat,datingLabels = file2matrix('datingTestSet2.txt')
fig = plt.figure()
ax = fig.add_subpot(111)
ax.scatter(datingDataMat[:,1],datingDataMat[:,2])
plt.show()

散点图使用datingDataMat矩阵的第二、第三列数据,分别表示特征值“玩视频游戏所耗时间百分比”和“每周消费的冰淇淋公升数”。

Python数据可视化编程通过Matplotlib创建散点图代码示例

上图由于没有使用样本分类的特征值,很难看到任何有用的数据模式信息。为了更好理解数据信息,Matplotlib库提供的scatter函数支持个性化标记散点图上的点。调用scatter函数使用下列参数:

ax.scatter(datingDataMat[:,1],datingDataMat[:,2],15.0*array(datingLabels),15.0*array(datingLabels))
plt.show()

Python数据可视化编程通过Matplotlib创建散点图代码示例

上图利用datingLabels存储的类标签属性,在散点图上绘制了色彩不等、尺寸不同的点。因而基本上可以从图中看到数据点所属三个样本分类的区域轮廓。为了得到更好的效果,采用datingDataMat矩阵的属性列1和2展示数据,并以红色的'*'表示类标签1、蓝色的'o'表示表示类标签2、绿色的'+'表示类标签3,修改参数如下:

import numpy as np
......
datingLabels = array(datingLabels)
idx_1 = np.where(datingLabels==1)
p1 = ax.scatter(datingDataMat[idx_1,0],datingDataMat[idx_1:,1],market = '*',color = 'r',label='1',s=20
idx_2 = np.where(datingLabels==2)
p2 = ax.scatter(datingDataMat[idx_2,0],datingDataMat[idx_2:,1],market = 'o',color ='b',label='1',s=10
idx_3 = np.where(datingLabels==3)
p3 = ax.scatter(datingDataMat[idx_3,0],datingDataMat[idx_3:,1],market = '+',color ='g',label='1',s=30
plt.legend(loc = 'upper right')
plt.show()

Python数据可视化编程通过Matplotlib创建散点图代码示例

总结

本文简单介绍了Matplotlib,并以实例分析了如何使用Matplotlib库图形化展示数据,最后通过修改matplotlib的scatter函数参数使得散点图的分类区域更加清晰。

希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Python实现的数据结构与算法之双端队列详解
Apr 22 Python
Python运算符重载用法实例分析
Jun 01 Python
python制作小说爬虫实录
Aug 14 Python
python爬虫爬取网页表格数据
Mar 07 Python
Python玩转PDF的各种骚操作
May 06 Python
python pandas时序处理相关功能详解
Jul 03 Python
python BlockingScheduler定时任务及其他方式的实现
Sep 19 Python
pycharm激活码有效到2020年11月底
Sep 18 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
Python执行时间的几种计算方法
Jul 31 Python
Python如何测试stdout输出
Aug 10 Python
Python实战之大鱼吃小鱼游戏的实现
Apr 01 Python
python学习之matplotlib绘制散点图实例
Dec 09 #Python
Python学习pygal绘制线图代码分享
Dec 09 #Python
Python编程pygal绘图实例之XY线
Dec 09 #Python
同时安装Python2 & Python3 cmd下版本自由选择的方法
Dec 09 #Python
基于Python中capitalize()与title()的区别详解
Dec 09 #Python
Python IDLE入门简介
Dec 08 #Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 #Python
You might like
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
php 处理上百万条的数据库如何提高处理查询速度
2010/02/08 PHP
php获取当前网址url并替换参数或网址的方法
2010/06/06 PHP
php设计模式 Delegation(委托模式)
2011/06/26 PHP
PHP5.4中json_encode中文转码的变化小结
2013/01/30 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
CentOS系统中PHP安装扩展的方式汇总
2017/04/09 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
node.js中的fs.appendFileSync方法使用说明
2014/12/17 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
Javascript 调用 ActionScript 的简单方法
2016/09/22 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
2017/11/09 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
Python 自动补全(vim)
2014/11/30 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
Python解决八皇后问题示例
2018/04/22 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
Python学习笔记之Django创建第一个数据库模型的方法
2019/08/07 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
幼师专业毕业生自荐信
2013/09/29 职场文书
会计毕业生自我鉴定
2013/11/04 职场文书
报告会主持词
2014/04/02 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
第二批党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
生活委员竞选稿
2015/11/21 职场文书
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers