用Matplotlib绘制二维图像
唠叨几句:
近期在做数据分析,需要对数据做可视化处理,也就是画图,一般是用Matlib来做,但Matlib安装文件太大,不太想直接用它,据说其代码运行效率也很低,在网上看到可以先用Java做数据处理,然后调用Matlib来画图,另外,还可以使用Matplotlib,它是用Python写的类似Matlib的库,能实现Matlib的功能,而且画图的质量很高,可用于做论文发表。找了一天的资料,终于出图了。
Matplotlib需要配合numpy,scipy才能使用,具体安装步骤稍后补充。
- 安装Python之后,在cmd中输入以下两行命令即可自动安装matplotlib,并解决库之间的依赖问题。
- python -m pip install -U pip setuptools #安装pip
- python -m pip install matplotlib #用pip安装matplotlib
matplotlib安装方法参考:http://matplotlib.org/users/installing.html
正文:
用Matplotlib绘制二维图像的最简单方法是:
1)导入matplotlib的子模块
- import matplotlib.pyplot as plt
2)给出x,y两个数组[Python列表],注意两个列表的元素个数必须相同,否则会报错
- x=[1,2,3,4,5,6,7]
- y=[2.6,3.6,8.3,56,12.7,8.9,5.3]
3)调用pyplot模块的绘图方法画出图像,基本的画图方法有:plot(将各个点连成曲线图)、scatter(画散点图),还有更多方法
- plt.plot(x,y)
- plt.scatter(x,y)
4)调用pyplot的show方法,显示结果。
- plt.show()
基本代码:
- import matplotlib.pyplot as plt
- def plot2D():
- x=[1,2,3,4,5,6,7]
- y=[2.6,3.6,8.3,56,12.7,8.9,5.3]
- plt.plot(x,y)#画连线图
- plt.scatter(x,y)#画散点图
- plt.show()
- if __name__=='__main__':
- plot2D()
结果图:
依次是:仅调用plot方法、仅调用scatter方法、同时调用plot和scatter方法
下面给出一个综合示例
本例用Python读取.txt文件中的数据内容(旧金山的出租车位置信息,引自http://crawdad.org/epfl/mobility/20090224/),作为绘制图像的数据源,调用Matplotlib模块的pyplot子模块画出图像。图像类型包括散点图、曲线图,包含图例说明、title、坐标轴说明
代码:
- # -*- coding: gbk -*-
- import re
- import matplotlib.pyplot as plt
- def loadData(dataFile,rowlimts):
- #dataFile=r'E:\cabspottingdata\new_abboip.txt'
- myFile=open(dataFile,'r',2048)#2048为缓冲大小
- newline=myFile.readline()
- geopoints=[]
- splitter=re.compile('\\s')#以空白字符作为分隔符
- rows=0
- while newline and rows<rowlimts:
- content=splitter.split(newline)
- geopoint=[]
- geopoint.append(float(content[1]))
- geopoint.append(float(content[0]))
- geopoints.append(geopoint)
- rows+=1
- newline=myFile.readline()
- myFile.close()
- return geopoints
- def main():
- rowlimits=25000#读取数据的行数
- dataFile=r'E:\cabspottingdata\new_abboip.txt'
- dataFile2=r'E:\cabspottingdata\new_utvohovy.txt'
- dataFile3=r'E:\cabspottingdata\new_uvjova.txt'
- geopoints=loadData(dataFile,rowlimits)
- geopoints2=loadData(dataFile2,rowlimits)
- geopoints3=loadData(dataFile3,rowlimits)
- x=[]
- y=[]
- x2=[]
- y2=[]
- x3=[]
- y3=[]
- for point in geopoints:
- x.append(point[0])
- y.append(point[1])
- for point in geopoints2:
- x2.append(point[0])
- y2.append(point[1])
- for point in geopoints3:
- x3.append(point[0])
- y3.append(point[1])
- plt.plot(x,y,color='green',label='cab 1')#绘制绿色线条,label要起作用,必须与legend()方法配合使用
- plt.scatter(x2,y2,color='green',label='cab 2')#用x2,y2列表绘制绿色散点图,图例为cab 2
- plt.plot(x3,y3,color='red',label='cab 3',linewidth=1)#用x3,y3列表绘制红色线条,图例为cab 3,线条粗细设为1
- #plt.scatter(x2,y2,color='g',label='line one',linewidths=1)
- #plt.plot(x, y, 'b^', x2, y2, 'g-')
- plt.legend()
- plt.grid(None, 'major', 'both')#画出网格背景
- plt.title('Plotting the trajectory of cabs in San Fransisco with %d spatial records'%rowlimits)#设置title
- plt.xlabel('longitude')#说明x轴表示经度
- plt.ylabel('latitude')#说明y轴表示纬度
- plt.show()#显示结果图
- if __name__=='__main__':
- main()
一些效果图:
用Matplotlib绘制二维图像的更多相关文章
- matlab绘制二维图形
常用的二维图形命令: plot:绘制二维图形 loglog:用全对数坐标绘图 semilogx:用半对数坐标(X)绘图 semilogy:用半对数坐标(Y)绘图 fill:绘制二维多边填充图形 pol ...
- 基于jquery类库的绘制二维码的插件jquery.qrcode.js
jquery.qrcode.min.js 如下 (function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.d ...
- Winform中使用zxing和Graphics实现自定义绘制二维码布局
场景 zxing.dll下载 https://download.csdn.net/download/badao_liumang_qizhi/11623214 效果 实现 根据上面文章中将简单的二维码生 ...
- amazeui+canvas绘制二维码
<link rel="stylesheet" type="text/css" href="css/amazeui.min.css"/& ...
- Matlab Tricks(二十五) —— 二维图像的 shuffle
比如对于 mnist (手写字符图像),每幅图像的像素点为 28*28,所以有: perm = randperm(28*28); % 重排列 mnist.train_images = reshape( ...
- 使用matplotlib绘制3D函数图像
学习并尝试了利用matplotlib进行3D函数图像的绘制 import matplotlib.pyplot as plt # 绘图用的模块 from mpl_toolkits.mplot3d imp ...
- Matlab——图形绘制——二维平面图形
二维平面图形 hold on ————在已画好的图形上添加新的图形 plot 是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x 及y 座标.下例可画出一条正弦曲线: > ...
- CAD绘制二维码(网页版)
js中实现代码说明: //新建一个COM组件对象 参数为COM组件类名 var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint"); ge ...
- matplotlib中使用imshow绘制二维图
#coding:utf-8 from matplotlib import mpl import matplotlib.pyplot as plt#载入matplotlib快速绘图的函数库 import ...
随机推荐
- ansible-2添加公钥
该文章摘自:http://www.fwqtg.net/%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E5%B7%A5%E5%85%B7ansible%E5 ...
- hdu3308 线段树 区间合并
给n个数字 U表示第A个数改为B.A是从0开始. Q输出最大的递增序列个数. 考虑左边,右边,和最大的. #include<stdio.h> #define lson l,m,rt< ...
- Hive简单优化;workflow调试
1. 定义job名字 SET mapred.job.name='customer_rfm_analysis_L1'; 这样在job任务列表里可以第一眼找到自己的任务. 2. 少用distinct, 尽 ...
- groovy-输入输出
Groovy为I/O提供了一系列的helper methods ,所有的这些方法都适用于标准的 Java Reader/Writer ,InputStream/OutputStream 和File 以 ...
- Oracle DBA从小白到入职实战应用
现如今Oracle依然是RDBMS的王者,在技术上和战略上,Oracle仍然一路高歌猛进,并且全面引领行业迈入了云时代,伴随着12cR2即将在2016年正式发布,学习Oracle之路依旧任重道远,目前 ...
- POJ2823Sliding Window
Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 49919 Accepted: 14391 ...
- POJ3041Asteroids(最小点覆盖+有点小抽象)
Asteroids Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18289 Accepted: 9968 Descri ...
- java操作MySQL数据事务的简单学习
在执行数据更改操作前使用数据库连接对象调用setAutoCommit方法(conn.setAutoCommit(false)),其参数true或false区别: true:sql命令的提交(commi ...
- 终端terminal配色
切换到~/.bash_profile,无此.bash_profile文件可创建 在文件内粘入以下代码: #enables colorin the terminal bash shell export ...
- Linux2.6内核实现的是NPTL
NPTL是一个1×1的线程模型,即一个线程对于一个操作系统的调度进程,优点是非常简单.而其他一些操作系统比如Solaris则是MxN的,M对应创建的线程数,N对应操作系统可以运行的实体.(N<M ...