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益智游戏计算汉诺塔问题示例
Mar 05 Python
Python实现各种排序算法的代码示例总结
Dec 11 Python
解析Python中的eval()、exec()及其相关函数
Dec 20 Python
python抓取网页中链接的静态图片
Jan 29 Python
python实现图书馆研习室自动预约功能
Apr 27 Python
python监控文件并且发送告警邮件
Jun 21 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
Python操作redis实例小结【String、Hash、List、Set等】
May 16 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
Sep 11 Python
python3中使用__slots__限定实例属性操作分析
Feb 14 Python
Python pysnmp使用方法及代码实例
Aug 24 Python
pycharm无法安装cv2模块问题
May 20 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
我的群发邮件程序
2006/10/09 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
PHP IN_ARRAY 函数使用注意事项
2010/07/24 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
php生成圆角图片的方法
2015/04/07 PHP
分享PHP函数实现数字与文字分页代码
2015/07/28 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
php正则提取html图片(img)src地址与任意属性的方法
2017/02/08 PHP
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
js 链式延迟执行DOME
2012/01/04 Javascript
js判断字符长度及中英文数字等
2014/03/19 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
node文字生成图片的示例代码
2017/10/26 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
tensorflow 输出权重到csv或txt的实例
2018/06/14 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
中学生个人自我评价
2014/02/06 职场文书
社区敬老月活动实施方案
2014/02/17 职场文书
应届生自荐书
2014/06/23 职场文书
公司委托书格式范文
2014/10/09 职场文书
关于观后感的作文
2015/06/18 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android
Python实现简单得递归下降Parser
2022/05/02 Python
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS