用Matplotlib绘制二维图像

唠叨几句:

近期在做数据分析,需要对数据做可视化处理,也就是画图,一般是用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=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‘)#用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()
    

一些效果图:

      

时间: 2024-08-01 09:28:51

用Matplotlib绘制二维图像的相关文章

二维图像到二维屏幕的投影 用例

说明 在默认的2D渲染中,渲染的X,Y轴的范围都是从[-1, 1],屏幕的中心点(0,0),所以鼠标点击的坐标,必须转换成世界地理坐标系,在2D环境下,默认Z轴坐标为0.0 假设屏幕宽800,高4800 屏幕坐标 地理坐标 左上角 0,0 -1,1 左下角  0,480 -1,-1 右上角  800,0           1,1 右下角  800,480         1,-1 现在通过gluOrtho2D函数将二维图像到二维屏幕上的投影,将坐标移动到左下角,方向刚好和屏幕坐标的Y轴相反 代

二维图像的投影和图像重建分析之傅里叶变换法

摘要:图像重建有变换法和迭代法,本文主要分析变换法.根据二维图像的投影,与其傅里叶变换之间的关系,得出图像重建的4种方法,直接傅里叶反变换.先反投影后滤波.先滤波后反投影.卷积反投影.直接傅里叶反变换法利用中心切片定理,先求投影数据的一维傅里叶变换,然后二维插值栅格化得到二维傅里叶变换数据,逆变换后得出目标图像.先反投影后滤波是将投影数据直接反投影,然后频域中通过二维锥形滤波,得到目标图像.先滤波后反投影时在反投影前对数据修正(滤波),卷积反投影与其类似,只是将频率中滤波拿到时域中做卷积运算.对

[理论基础]二维图像滤波处理的理论基础

两个信号在时域的卷积等于频域的乘积.而二维图像常用的滤波处理,就是二维图像与一个3*3或者5*5的滤波数组的卷积,对应于该二维图像与 滤波数组经过傅里叶变换到频域后数据的乘积.正式因为这个数学特征,使得我们在时域看起来很难处理的频率滤波,在频域非常容易得以实现. 通过下面的3张图,很容易理解图像数据里高频信号和低频信号的概念: 1.原图及傅里叶变换幅度(左下)与相位图(右下) 2.傅里叶变换幅度图中心圆外面部分(高频部分)全零与反傅里叶变换后的原图 3.傅里叶变换幅度图中心圆里面部分(低频部分)

二维图像的三角形变换算法解释

http://blog.csdn.net/aqua_aqua/article/details/407660 对于二维图像的变形,最简单直接的方式就是将需要变形的不规则区域进行三角形划分,使复杂多边形由1到N个三角形组成,那么最终的变形动作也就转化为这些三角形变形. 三角形变形,就是将一个三角形通过某种变换变成另一个三角形,同时也要保证在源三角形中的点能够正确映射到目标三角形中合适的位置.如下图所示: 图中△ABC是源三角形,Z点是源三角形中的任意一点.△abc为目标三角形,而z点就是源三角形中Z

二维图像频谱中的两点表示什么

冈萨雷斯版<图像处理>里面的解释非常形象:一个恰当的比喻是将傅里叶变换比作一个玻璃棱镜.棱镜是可以将光分解为不同颜色的物理仪器,每个成分的颜色由波长(或频率)来决定. 傅里叶变换可以看作是数学上的棱镜,将函数基于频率分解为不同的成分.当我们考虑光时,讨论它的光谱或频率谱.同样, 傅立叶变换使我们能通过频率成分来分析一个函数. 图像傅立叶变换的物理意义 图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度.如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低:而对

amazeui+canvas绘制二维码

<link rel="stylesheet" type="text/css" href="css/amazeui.min.css"/> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" src="j

二维图像插值算法实现

在做数字图像处理时,经常会碰到小数象素坐标的取值问题,这时就需要依据邻近象素的值来对该坐标进行插值.比如:做地图投影转换,对目标图像的一个象素进行坐标变换到源图像上对应的点时,变换出来的对应的坐标是一个小数,再比如做图像的几何校正,也会碰到同样的问题.看够了各种数学原理,直接上具体的实现步骤.no公式no理论,以下是对常用的三种数字图像插值 方法进行介绍. 1.最近邻插值法(Nearest Neighbour Interpolation) 这是最简单的一种插值方法,不需要计算,在待求象素的四邻象

Matlab——图形绘制——二维平面图形

二维平面图形 hold on ————在已画好的图形上添加新的图形 plot 是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x 及y 座标.下例可画出一条正弦曲线: >> x=0:0.001:10; % 0 到10 的1000 个点的x 座标 y=sin(x); % 对应的y 座标 plot(x,y); % 绘图 改变颜色 >> plot(x,y,'k') 改变颜色的同时改变图线形态 >> plot(x,y,'k*')  同时画两个函数[淡粉色

使用matplotlib绘制3D函数图像

学习并尝试了利用matplotlib进行3D函数图像的绘制 1 import matplotlib.pyplot as plt # 绘图用的模块 2 from mpl_toolkits.mplot3d import Axes3D # 绘制3D坐标的函数 3 import numpy as np 4 5 6 def fun(x, y): 7 return np.power(x, 2) + np.power(y, 2) 8 9 10 fig1 = plt.figure() # 创建一个绘图对象 11