码迷,mamicode.com
首页 > 其他好文 > 详细

用Matplotlib绘制二维图像

时间:2016-01-22 14:21:43      阅读:3736      评论:0      收藏:0      [点我收藏+]

标签:

唠叨几句:

近期在做数据分析,需要对数据做可视化处理,也就是画图,一般是用Matlib来做,但Matlib安装文件太大,不太想直接用它,据说其代码运行效率也很低,在网上看到可以先用Java做数据处理,然后调用Matlib来画图,另外,还可以使用Matplotlib,它是用Python写的类似Matlib的库,能实现Matlib的功能,而且画图的质量很高,可用于做论文发表。找了一天的资料,终于出图了。

Matplotlib需要配合numpy,scipy才能使用,具体安装步骤稍后补充。

 

正文:

用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=rE:\cabspottingdata\new_abboip.txt
    dataFile2=rE:\cabspottingdata\new_utvohovy.txt
    dataFile3=rE:\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)#用x3,y3列表绘制蓝色散点图,图例为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绘制二维图像

标签:

原文地址:http://www.cnblogs.com/aaronhoo/p/5150596.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!