博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Machine Learning]matplotlib
阅读量:4445 次
发布时间:2019-06-07

本文共 3232 字,大约阅读时间需要 10 分钟。

matplotlib是python最著名的绘图库,它提供了一整套和MATLAB类似的绘图函数集。

一. 快速绘图

1. 使用pyplot模块绘图

pyplot模块提供了快速绘制二维图表的API,例子:

1 # -*- coding: utf-8 -*- 2 """ 3 绘制简单的曲线。 4 """ 5 import numpy as np 6 import matplotlib.pyplot as plt #导入pyplot模块  7  8 x = np.linspace(0, 10, 1000) 9 y = np.sin(x)10 z = np.cos(x**2)11 12 #创建一个Figure对象, figsize指定Figure对象的宽度和高度, 单位英寸13 plt.figure(figsize=(8,4))14 15 # 调用plot()函数在当前Figure对象上绘图16 # 指定X, Y轴数据17 # label: 给曲线指定一个标签名称, 前后的'$'使标签用LaTex引擎来显示文字18 # color: 曲线的颜色19 # linewidth(lw):  曲线宽度20 plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)21 22 # 使用"b--"指定曲线的颜色和线型,b表示蓝色, '--'表示虚线23 plt.plot(x,z,"b--",label="$cos(x^2)$")24 # X, Y轴标题文字25 plt.xlabel("Time(s)")26 plt.ylabel("Volt")27 28 # 标题29 plt.title("PyPlot First Example")30 31 # Y轴范围32 plt.ylim(-1.2,1.2)33 34 # 显示图示, 即图中表示每条曲线的标签和样式的矩形区域35 plt.legend()36 37 # 显示绘图窗口38 plt.show()

                              PyPlot First Example的显示效果 可以调用savefig()批量保存图片:
1 plt.savefig("test.png", dpi=120)

2. 以面向对象方式绘图

matplotlib所绘制的图标中每一个绘图元素都是一个对象:

1 #获取当前图标, Get Current Figure2 fig = plt.gcf()3 #获取当前子图,Get Current Axes4 axes = plt.gca()

3. 配置属性

使用matplotlib绘制的图表的每个组成部分都和一个对象对应,可以通过调用这些对象的属性设置方法set_*()或者pyplot模块的属性设置函数setp()来设置它们的属性值。

1 x = np.arange(0, 5, 0.1)2 line = plt.plot(x, x * x)[0]3 line.set_antialiased(False) #取消反锯齿效果
1 # 同时绘制正弦余弦曲线2 lines = plt.plot(x, np.sin(x), x, np.cos(x))3 # 同时配置多个对象的属性4 plt.setp(lines, color= 'r', linewidth = 2.0)

可以用get_*()和plt.getp()获取对象属性。

4. 绘制多个子图

一个Figure对象可以包含多个子图(Axes),在matplotlib中用Axes对象表示一个绘制区域(子图)。可以用subplot()快速绘制包含多个子图的图表:

1 # 图表的整个绘制区域被等分为numRows行和numCols列2 # plotNum参数指定创建的Axes对象所在的区域3 subplot(numRows, numCols, plotNum)
1 for idx, color in enumerate("rgbyck"):2    plt.subplot(321 + idx, axisbg = color)3 plt.show()

如果希望某个子图占据整行或者整列:

1 plt.subplot(221)2 plt.subplot(222)3 plt.subplot(212)4 plt.show()

 subplot()返回所创建的Axes对象,可以保存起来,然后用sca()交替让它们成为当前Axes对象:

1 #-*- coding:utf8 2 import numpy as np 3 import matplotlib.pyplot as plt  4  5 plt.figure(1) # 创建图表1 6 plt.figure(2) # 创建图表2 7 ax1 = plt.subplot(211) # 在图表2中创建子图1 8 ax2 = plt.subplot(212) # 在图表2中创建子图2 9 10 x = np.linspace(0, 3, 100)11 for i in xrange(5):12     plt.figure(1) # 选中图表113     plt.plot(x, np.exp(i * x / 3)) 14     plt.sca(ax1) # 在图表2中选中子图115     plt.plot(x, np.sin(i * x)) 16     plt.sca(ax2) # 在图表2中选中子图217     plt.plot(x, np.cos(i * x)) 18 19 plt.show()

二. Artist对象

matplotlib是一套面向对象的绘图库,它有三个层次:

  • backend_bases.FigureCanvas:图表的绘制领域;
  • backend_bases.Renderer: 知道如何在FigureCanvas对象上绘图;
  • artist.Artist:知道如何使用Renderer在FigureCanvas对象上绘图;

我们只需和Artist打交道,Artist对象分为简单类型和容器类型两种,简单类型的Artist对象是标准的绘图元件,例如Line2D, Reactangle, Text等,而容器类型包括许多简单类型的Artist, 使它们成为一个整体。直接创建Artist对象进行绘图的流程如下:

  • 创建Figure对象;
  • 为Figure对象创建一个或者多个Axes对象;
  • 调用Axes对象的方法创建各种简单类型的Artist对象;

1. Artist对象的属性

1 fig = plt.figure()2 plt.show()3 fig.patch.set_color("g") # 设置背景色为绿色4 fig.canvas.draw() #重绘界面
1 alpha:透明度, 值在0~1之间; 2 animated: 布尔值,绘制动画效果时使用; 3 axes: 拥有此Artist对象的Axes对象,可能为None; 4 clip_box:对象的裁剪框; 5 clip_on:是否裁剪; 6 clip_path:裁剪路径; 7 contains:判断指定点是否在对象之上的函数; 8 figure:拥有此Artist的Figure对象,可能为None; 9 label:文本标签;10 picker:控制Artist对象的选取;11 transform:控制偏移,旋转,缩放等坐标变换;12 visible:是否可见;13 zorder:控制绘图顺序

 以上是Artist对象的属性,可以通过set_*()或者get_*()设置和获取。

 

转载于:https://www.cnblogs.com/skycore/p/4971867.html

你可能感兴趣的文章
Java的锁机制
查看>>
第二次作业(Python)
查看>>
不偏移的天地图地图服务
查看>>
二进制、八进制、十进制、十六进制之间的转换
查看>>
windows安装TortoiseGit详细使用教程【基础篇】
查看>>
UsefulSQL
查看>>
截取url中的某个字符串后面的值
查看>>
根据已知值,选中selec中的选项
查看>>
设计模式(4)--代理模式
查看>>
正则表达式
查看>>
基金都有哪些费用?如何计算?
查看>>
Python 之字符串常用操作
查看>>
实验二 栈和队列——顺序栈、顺序队列
查看>>
Oracle 分页查询方法和效率分析
查看>>
sql基础
查看>>
vuex里mapState,mapGetters使用详解
查看>>
《一个程序员的生命周期》读后感
查看>>
python函数
查看>>
C++实现网格水印之调试笔记(二)
查看>>
[技术讨论]关于前几天公布的京东bug上的问题分析
查看>>