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检测远程udp端口是否打开的方法
Mar 14 Python
Python如何实现守护进程的方法示例
Feb 08 Python
Python类的动态修改的实例方法
Mar 24 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
Linux上使用Python统计每天的键盘输入次数
Apr 17 Python
解决Django生产环境无法加载静态文件问题的解决
Apr 23 Python
python之pexpect实现自动交互的例子
Jul 25 Python
python3 深浅copy对比详解
Aug 12 Python
pytorch GAN生成对抗网络实例
Jan 10 Python
Python3中的f-Strings增强版字符串格式化方法
Mar 04 Python
python中return不返回值的问题解析
Jul 22 Python
python中的被动信息搜集
Apr 29 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
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
PHP 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
PHP获取一年中每个星期的开始和结束日期的方法
2015/02/12 PHP
PHP使用自定义方法实现数组合并示例
2016/07/07 PHP
PHP进阶学习之依赖注入与Ioc容器详解
2019/06/19 PHP
javascript 全等号运算符使用说明
2010/05/31 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
js实现最短的XML格式化工具实例
2015/03/12 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
2016/12/11 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
以一段代码为实例快速入门Python2.7
2015/03/31 Python
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
EM算法的python实现的方法步骤
2018/01/02 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
Python爬取网页信息的示例
2020/09/24 Python
Java面试题及答案
2012/09/08 面试题
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
电子技术专业中专生的自我评价
2013/12/17 职场文书
《手指教学》反思
2014/02/14 职场文书
房地产促销活动方案
2014/03/01 职场文书
党员大会主持词
2014/04/02 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
教师学习群众路线心得体会
2014/11/04 职场文书
会计岗位职责范本
2015/04/02 职场文书
介绍信怎么写
2015/05/05 职场文书
如何写通讯稿
2015/07/22 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技