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实现带验证码网站的自动登陆实现代码
Jan 12 Python
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
Mar 30 Python
在Python上基于Markov链生成伪随机文本的教程
Apr 17 Python
修改Python的pyxmpp2中的主循环使其提高性能
Apr 24 Python
python中的全局变量用法分析
Jun 09 Python
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
PyQt5打开文件对话框QFileDialog实例代码
Feb 07 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
python微信公众号开发简单流程实现
Mar 09 Python
Python获取对象属性的几种方式小结
Mar 12 Python
Python实现Wordcloud生成词云图的示例
Mar 30 Python
使用IPython或Spyder将省略号表示的内容完整输出
Apr 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
PHP中,文件上传
2006/12/06 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
Jquery submit()无法提交问题
2013/04/21 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
jquery siblings获取同辈元素用法实例分析
2016/07/25 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
微信小程序开发之IOS和Android兼容的问题
2017/09/26 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
[44:51]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第二场
2018/04/05 DOTA
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
使用tensorflow DataSet实现高效加载变长文本输入
2020/01/20 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
django实现将后台model对象转换成json对象并传递给前端jquery
2020/03/16 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
表单button的outline在firefox浏览器下的问题
2012/12/24 HTML / CSS
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
什么是接口(Interface)?
2013/02/01 面试题
电脑专业个人求职信范文
2014/02/04 职场文书
董事长秘书工作职责
2014/06/10 职场文书
大学生简历求职信
2014/06/24 职场文书
小学生田径运动会广播稿
2014/09/11 职场文书
2015毕业寄语大全
2015/02/26 职场文书
学生会任命书范本
2015/09/21 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
python中取整数的几种方法
2021/11/07 Python
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL