唠叨几句:

近期在做数据分析,需要对数据做可视化处理,也就是画图,一般是用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绘制二维图像的更多相关文章

  1. matlab绘制二维图形

    常用的二维图形命令: plot:绘制二维图形 loglog:用全对数坐标绘图 semilogx:用半对数坐标(X)绘图 semilogy:用半对数坐标(Y)绘图 fill:绘制二维多边填充图形 pol ...

  2. 基于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 ...

  3. Winform中使用zxing和Graphics实现自定义绘制二维码布局

    场景 zxing.dll下载 https://download.csdn.net/download/badao_liumang_qizhi/11623214 效果 实现 根据上面文章中将简单的二维码生 ...

  4. amazeui+canvas绘制二维码

    <link rel="stylesheet" type="text/css" href="css/amazeui.min.css"/& ...

  5. Matlab Tricks(二十五) —— 二维图像的 shuffle

    比如对于 mnist (手写字符图像),每幅图像的像素点为 28*28,所以有: perm = randperm(28*28); % 重排列 mnist.train_images = reshape( ...

  6. 使用matplotlib绘制3D函数图像

    学习并尝试了利用matplotlib进行3D函数图像的绘制 import matplotlib.pyplot as plt # 绘图用的模块 from mpl_toolkits.mplot3d imp ...

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

    二维平面图形 hold on ————在已画好的图形上添加新的图形 plot 是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x 及y 座标.下例可画出一条正弦曲线: > ...

  8. CAD绘制二维码(网页版)

    js中实现代码说明: //新建一个COM组件对象 参数为COM组件类名 var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint"); ge ...

  9. matplotlib中使用imshow绘制二维图

    #coding:utf-8 from matplotlib import mpl import matplotlib.pyplot as plt#载入matplotlib快速绘图的函数库 import ...

随机推荐

  1. IOS 判断日期是今天,昨天还是明天

    git地址: https://github.com/JsoonLi/NSDate-Extension   - (NSString *)compareDate:(NSDate *)date{ NSTim ...

  2. MongoDB 2.6设置访问权限、设置用户

    MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),今天特地花了一点时间研究了一下,研究成果如下: 注:研究成果基于W ...

  3. 更改PATH后,别忘了及时重启或刷新

    在windows环境下配了MinGW gcc编译器,结果编译时总提示找不到头文件.第一反应就是更改环境变量,但是将gcc目录添加到PATH中,再次运行编译依旧报错.多方查找后发现这样一句话:PATH在 ...

  4. 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 ...

  5. CODEVS 1959 拔河比赛(另一版本)

    题目描述 Description 一个学校举行拔河比赛,所有的人被分成了两组,每个人必须(且只能够)在其中的一组,要求两个组的人数相差不能超过1,且两个组内的所有人体重加起来尽可能地接近. 输入描述 ...

  6. hihocoder 1181 欧拉路.二

    传送门:欧拉路·二 #1181 : 欧拉路·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回中小Hi和小Ho控制着主角收集了分散在各个木桥上的道具,这些道具其 ...

  7. Android自动化测试框架对比

    1.Monkeyrunner:优点:操作最为简单,可以录制测试脚本,可视化操作:缺点:主要生成坐标的自动化操作,移植性不强,功能最为局限:2.Rubotium:主要针对某一个APK进行自动化测试,AP ...

  8. dto

    dto dto- datatransfer object(数据传输对象):dto在设计之初的主要考量是以粗粒度的数据结构减少网络通信并简化调用接口. http://www.cnblogs.com/wu ...

  9. AspectJ AOP学习基础

    一.切入点表达式 1.execution:匹配方法的执行 格式:execution(修饰符 返回值类型 包.类.方法(参数) throw 异常) 1.1修饰符,表示方法的修饰符,一般省略. 1.2返回 ...

  10. iOS 代理与block 逆向传值 学习

    一般在项目中出现逆向传值的时候就需要用到代理.block 或者通知中心了.由于公司的项目底层封装的很好,所以项目做了三四个月就算碰到需要逆传的情况也不用自己处理.但是最近遇到了一个特别的情况就需要自己 ...