前言:matplotlib是一个python的第三方库,里面的pyplot可以用来作图。下面来学习一下如何使用它的资源。

一、使用前

首先在python中使用任何第三方库时,都必须先将其引入。即:

  1. import matplotlib.pyplot as plt

或者:

  1. from matplotlib.pyplot import *

二、用法

1.建立空白图

  1. fig = plt.figure()

得到如下图的效果:

图片上方—–(这里由于图是空白的所以看不见内容)——————————–



图片下方——–(这里由于图是空白的所以看不见内容)———————————-

也可以指定所建立图的大小

  1. fig = plt.figure(figsize=(4,2))

效果如下:

图片上方—–(这里由于图是空白的所以看不见内容)——————————–



图片下方——–(这里由于图是空白的所以看不见内容)———————————-

当然我们也可以建立一个包含多个子图的图,使用语句:

  1. plt.figure(figsize=(12,6))
  2. plt.subplot(231)
  3. plt.subplot(232)
  4. plt.subplot(233)
  5. plt.subplot(234)
  6. plt.subplot(235)
  7. plt.subplot(236)
  8. plt.show()

效果如下:

其中subplot()函数中的三个数字,第一个表示Y轴方向的子图个数,第二个表示X轴方向的子图个数,第三个则表示当前要画图的焦点。

当然上述写法并不是唯一的,比如我们也可以这样写:

  1. fig = plt.figure(figsize=(6, 6))
  2. ax1 = fig.add_subplot(221)
  3. ax2 = fig.add_subplot(222)
  4. ax3 = fig.add_subplot(223)
  5. ax4 = fig.add_subplot(224)
  6. plt.show()

效果如下:

可以看到图中的x,y轴坐标都是从0到1,当然有时候我们需要其他的坐标起始值。

此时可以使用语句指定:

  1. ax1.axis([-1, 1, -1, 1])

或者:

  1. plt.axis([-1, 1, -1, 1])

效果如下:

注意第一个子图。

2.向空白图中添加内容,想你所想,画你所想

首先给出一组数据:

  1. x = [1, 2, 3, 4, 5]
  2. y = [2.3, 3.4, 1.2, 6.6, 7.0]

A.画散点图*

  1. plt.scatter(x, y, color='r', marker='+')
  2. plt.show()

效果如下:

这里的参数意义:

  1. x为横坐标向量,y为纵坐标向量,x,y的长度必须一致。
  2. 控制颜色:color为散点的颜色标志,常用color的表示如下:

    1. b---blue c---cyan g---green k----black
    2. m---magenta r---red w---white y----yellow

    有四种表示颜色的方式:

    • 用全名
    • 16进制,如:#FF00FF
    • 灰度强度,如:‘0.7’
  3. 控制标记风格:marker为散点的标记,标记风格有多种:

    1. . Point marker
    2. , Pixel marker
    3. o Circle marker
    4. v Triangle down marker
    5. ^ Triangle up marker
    6. < Triangle left marker
    7. > Triangle right marker
    8. 1 Tripod down marker
    9. 2 Tripod up marker
    10. 3 Tripod left marker
    11. 4 Tripod right marker
    12. s Square marker
    13. p Pentagon marker
    14. * Star marker
    15. h Hexagon marker
    16. H Rotated hexagon D Diamond marker
    17. d Thin diamond marker
    18. | Vertical line (vlinesymbol) marker
    19. _ Horizontal line (hline symbol) marker
    20. + Plus marker
    21. x Cross (x) marker

B.函数图(折线图)

数据还是上面的。

  1. fig = plt.figure(figsize=(12, 6))
  2. plt.subplot(121)
  3. plt.plot(x, y, color='r', linestyle='-')
  4. plt.subplot(122)
  5. plt.plot(x, y, color='r', linestyle='--')
  6. plt.show()

效果如下:

这里有一个新的参数linestyle,控制的是线型的格式:符号和线型之间的对应关系

  1. - 实线
  2. -- 短线
  3. -. 短点相间线
  4. 虚点线

另外除了给出数据画图之外,我们也可以利用函数表达式进行画图,例如:y=sin(x)

  1. from math import *
  2. from numpy import *
  3. x = arange(-math.pi, math.pi, 0.01)
  4. y = [sin(xx) for xx in x]
  5. plt.figure()
  6. plt.plot(x, y, color='r', linestyle='-.')
  7. plt.show()

效果如下:

C.扇形图

示例:

  1. import matplotlib.pyplot as plt
  2. y = [2.3, 3.4, 1.2, 6.6, 7.0]
  3. plt.figure()
  4. plt.pie(y)
  5. plt.title('PIE')
  6. plt.show()

效果如下:

D.柱状图bar

示例:

  1. import matplotlib.pyplot as plt
  2. x = [1, 2, 3, 4, 5]
  3. y = [2.3, 3.4, 1.2, 6.6, 7.0]
  4. plt.figure()
  5. plt.bar(x, y)
  6. plt.title("bar")
  7. plt.show()

效果如下:

E.二维图形(等高线,本地图片等)

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import matplotlib.image as mpimg
  4. # 2D data
  5. delta = 0.025
  6. x = y = np.arange(-3.0, 3.0, delta)
  7. X, Y = np.meshgrid(x, y)
  8. Z = Y**2 + X**2
  9. plt.figure(figsize=(12, 6))
  10. plt.subplot(121)
  11. plt.contour(X, Y, Z)
  12. plt.colorbar()
  13. plt.title("contour")
  14. # read image
  15. img=mpimg.imread('marvin.jpg')
  16. plt.subplot(122)
  17. plt.imshow(img)
  18. plt.title("imshow")
  19. plt.show()
  20. #plt.savefig("matplot_sample.jpg")

效果图:

F.对所画图进行补充

  1. __author__ = 'wenbaoli'
  2. import matplotlib.pyplot as plt
  3. from math import *
  4. from numpy import *
  5. x = arange(-math.pi, math.pi, 0.01)
  6. y = [sin(xx) for xx in x]
  7. plt.figure()
  8. plt.plot(x, y, color='r', linestyle='-')
  9. plt.xlabel(u'X')#fill the meaning of X axis
  10. plt.ylabel(u'Sin(X)')#fill the meaning of Y axis
  11. plt.title(u'sin(x)')#add the title of the figure
  12. plt.show()

效果图:

三、结束语

尽管上述例子给出了基本的画图方法,但是其中的函数还有很多其他的用法(参数可能不只如此),因此本文只能算做一个基本入门。还需要参考API进行详尽的知识学习。

四、参考

上述内容部分引用自:

http://www.cnblogs.com/vamei/archive/2013/01/30/2879700.html

python学习(三):matplotlib学习的更多相关文章

  1. Python 第三天学习整理①

    今天学习的内容包括以下几个方面:1.字符编码 2.文件操作 3.函数 1.字符编码 关于字符编码,关注以下几个点 1.1 什么是字符编码 字符编码:字符转化为数字的过程所遵循的标准 字符编码包括:un ...

  2. python数据分析之matplotlib学习

    本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找. 类MATLAB API 最简单的入门是从类 MATLAB API 开始,它被设计成兼容 MATLAB 绘图函数. from p ...

  3. Python 第三天学习整理2

    一.常用的字符串方法 capitalize() #将字符串首字母大写 center(100,'*') #把字符串居中的 count(‘zhou’)#查询次数 endswith('.jpg ')#判断字 ...

  4. python库之matplotlib学习---关于坐标轴

    首先定·定义x, y创建一个figure import numpy as np import matplotlib.pyplot as plt x = np.linspace(-1, 1, 10) y ...

  5. 系统学习python第三天学习笔记

    day02补充 运算符补充 in value = "我是中国人" # 判断'中国'是否在value所代指的字符串中. "中国"是否是value所代指的字符串的子 ...

  6. python库之matplotlib学习---图无法显示中文

    在代码前面加上 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] ...

  7. java_web学习(三) eclipse_jsp学习

    1.首先打开eclipse,新建一个Dynamac web project项目文件 2.在WebContent单击右键创建JSP File 3.过程 4.简单的jsp代码 运行结果: 5.导出war文 ...

  8. Html学习(三) 分类学习

    代码: <h1>这是一级分类吗</h1> <h2>这是二级分类吗</h2> <h3>这是三级分类吗 </h3> 效果: 介绍: ...

  9. 学习Python的三种境界

    前言 王国维在<人间词话>中将读书分为了三种境界:"古今之成大事业.大学问者,必经过三种之境界:'昨夜西风凋碧树,独上高楼,望尽天涯路'.此第一境也.'衣带渐宽终不悔,为伊消得人 ...

  10. Python入门基础学习 三

    Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...

随机推荐

  1. [原]网络库libevent在Visual Studio中的使用方法

    libevent是一个事件触发的网络库,适用于windows.linux.bsd等多种平台,内部使用select.epoll.kqueue等系统调用管理事件机制.著名分布式缓存软件memcached也 ...

  2. Windows环境变量

    说明:系统文件盘为C盘,操作系统为Windows XP.登录用户名为weste.计算机名为icech 说明:不同的操作系统如Windows XP和Windows 2000相对应的一些路径是不同的,这里 ...

  3. 在程序中使用gettid()的方法

    gettid()这个函数不可以在程序中直接使用,它是linux本身的一个函数,直接使用会出现,尚未声明之类的错误. 我们可以自已定义实现方法,如下: #include <sys/syscall. ...

  4. 【jmeter】属性和变量

    一.Jmeter中的属性: 1.JMeter属性统一定义在jmeter.properties文件中,我们可以在该文件中添加自定义的属性 2.JMeter属性在测试脚本的任何地方都是可见的(全局),通常 ...

  5. Android外派(安卓外派) — 长年提供安卓开发工程师外派业务(可签合同)

    北京动点飞扬长年提供安卓工程师外派业务. 平均技术情况如下: 1.2~3年以上Android平台开发经验2.熟练掌握java技术,熟悉面向对象编程设计3.熟悉Android应用开发框架及Activit ...

  6. 剑指offer系列53---字符串转化成整数

    [题目]将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数 * []整数(32位)最大值:0X7fff ffff( 0111 1111 1111 1111 1111 1111 1111 1 ...

  7. Maven的几个核心概念

    POM (Project Object Model) 一个项目所有的配置都放置在 POM 文件中:定义项目的类型.名字,管理依赖关系,定制插件的行为等等.比如说,你可以配置 compiler 插件让它 ...

  8. C3P0数据库连接池的相关bug解决

    数据库连接池的几个常见bug: 1.警告: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@76c7022e -- ...

  9. mongodb,redis,mysql 简要对比

    本篇内容大部分不是原创,转载的会贴有链接. 准备学习下数据库,想对目前的主流数据库做一个简单的了解分析,就搜集了资料整理到了一块. 当下主流的要数NoSql数据库了,拥有强大的高并发能力. mongo ...

  10. Mac下lombok无法安装到eclipse mars

    eclipse升级到mars之后 , 在mac下已经不再是文件夹中有很多文件的eclipse了 , 只有一个单独的app文件.用原来的方式运行lombok再选eclipse.app已经不行了. 自己鼓 ...