主要内容是Matplotlib库的基本使用和方法

1 Matplotlib库

1.1 Matplotlib的介绍

  Python优秀的数据可视化第三方库

  数据可视化就是将数据以特定的图形图像的方式展示出来, 使数据更加的直观明了

  范例网站

  Matplotlib库是由各种可视化类构成, 内部结构复杂

  为了简洁使用, 可以使用matplotlib.pyplot这个绘制各类可视化图形的命令子库, 类似于快捷方式的库来简化操作

  导入

import matplotlib.pyplot as plt

    同样plt也是约定俗成的别名

  基本使用

    使用plt.plot(数组)传入数组, 如果只有一个一维数组, 那么数组的值会指定给Y轴, X轴为他们的索引值

    使用plt.ylabel(名字)设置Y轴的名字

    使用plt.savefig(文件名, dpi=dpi的大小)保存图像为图像文件, dpi一般设置为600, 默认是PNG格式保存

    使用plt.show()在IPython中展示生成的图形

    使用plt.axis([x1, x2, y1, y2])可以设置X轴的起点和终点, Y轴的起点和终点

    相关代码如下

import matplotlib.pyplot as plt

plt.plot([0, 2, 4, 6, 8], [3, 1, 4, 5, 2])
plt.ylabel("Y")
plt.axis([-1, 10, 0, 6])
plt.savefig("test", dpi=600)
plt.show()

    相关结果如下

    

  pyplot的绘图区域

    使用plt.subplot(nrows, ncols, plot_number)在全局绘图区域中创建一个分区体系, 然后指定在哪个子区域里绘图

    其中nrows表示横向划分多少的区域, ncols表示纵向划分多少的区域, 子区域的标号是从1开始的, 从上到下从左到右依次排序

    另外在数量小的时候, 这三个参数之间的逗号可以去掉

    具体代码如下

import numpy as np
import matplotlib.pyplot as plt def f(t):
return np.exp(-t) * np.cos(2*np.pi*t) a = np.arange(0.0, 5.0, 0.02) plt.subplot(211)
plt.plot(a, f(a)) plt.subplot(2,1,2)
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.show()

    具体效果如下

    

1.2 pyplot的plot()函数

  plot()的具体形式如下:

plt.plot(x, y, format_string, **kwargs)

    x: X轴的数据, 可以是列表或者数组, 可选项, 但是当绘制多条曲线的时候, 各条曲线的x不能省略

    y: Y轴的数据, 列表或数组, 必填项

    format_string: 控制曲线的格式的字符串, 可选项

    **kwargs: 第二组或更多的 (x, y, format_string)

    绘制多条图像

import numpy as np
import matplotlib.pyplot as plt a = np.arange(10)
plt.plot(a, 1.5*a, a, 2.5*a, a, 3.6*a, a, 4.5*a)
plt.show()

    结果为

    

  曲线的格式控制

    format_string由制颜色字符, 风格字符和标记字符组成

    具体有

    

    

    

    更改之前的风格代码

import numpy as np
import matplotlib.pyplot as plt a = np.arange(10)
plt.plot(a, 1.5*a, 'go-', a, 2.5*a, 'rx', a, 3.6*a, '*', a, 4.5*a, 'b-.')
plt.show()

    效果为

    

  关于**kwargs

    可以添加更多更详细的参数

    color: 控制颜色, color="green"

    linestyle: 线条风格, linestyle="dashed"

    marker: 标记风格, marker="o", 这三个和前面的format是对应的, 此外还有

    markerfacecolor: 标记的颜色, markerfacecolor="blue"

    markersize: 标记的尺寸, markersize=20

    ...

1.3 pyplot的中文显示

  默认情况下, pyplot并不支持中文字符, 在最开始的折线图中, 如果设置ylabel()为中文, 则在图像中不能正常显示

  要显示中文有种办法

  1) 使用rcParams

    设置其font.family为中文字符

    具体代码如下

import matplotlib.pyplot as plt
import matplotlib matplotlib.rcParams['font.family'] = 'SimHei'
plt.plot([0, 2, 4, 6, 8], [3, 1, 4, 5, 2])
plt.ylabel("Y轴坐标")
plt.axis([-1, 10, 0, 6])
plt.savefig("test", dpi=600)
plt.show()

    具体效果

    

      其中SimHei是黑体

    具体更多参数

    

    相应的中文字体种类

    

    参考实例

import numpy as np
import matplotlib.pyplot as plt
import matplotlib matplotlib.rcParams['font.family'] = 'FangSong'
matplotlib.rcParams['font.size'] = 20 a = np.arange(0.0, 5.0, 0.02) plt.xlabel("X轴: 时间")
plt.ylabel("Y轴: 振幅") plt.plot(a, np.cos(2*np.pi*a)+1, 'r--')
plt.savefig('test2', dpi=600)
plt.show()

    效果为

  

  2) 增加 fontproperties属性

    在上述的例子中, 可以在xlabel中增加参数fontproperties来限定显示的字体, 用此来解决中文显示

    具体代码如下

import numpy as np
import matplotlib.pyplot as plt a = np.arange(0.0, 5.0, 0.02) plt.xlabel("X轴: 时间", fontproperties="FangSong", fontsize=20)
plt.ylabel("Y轴: 振幅", fontproperties="FangSong", fontsize=20) plt.plot(a, np.cos(2*np.pi*a)+1, 'r--')
plt.show()

  两种方法的区别就是第一种是全局修改, 第二种是指定修改

  建议使用第二种方法, 但是为了统一可以使用方法一

1.4 pyplot的文本显示

  常见的文本显示函数是

    

    其中title会在整个图形的正中上放写上文字

  具体实例如下

import numpy as np
import matplotlib.pyplot as plt a = np.arange(0.0, 5.0, 0.02)
plt.plot(a, np.cos(2*np.pi*a)+2, 'r--') plt.xlabel("X轴: 时间", fontproperties="FangSong", fontsize=15, color='green')
plt.ylabel("Y轴: 振幅", fontproperties="FangSong", fontsize=15)
plt.title(r'正玄波实例$y=cos(2\pi x)$', fontproperties="SimHei", fontsize=25)
plt.text(2, 3, r'$\mu=100$', fontsize=15) plt.axis([-1, 6, 0, 4])
plt.grid(True)
plt.savefig('test3', dpi=600)
plt.show()

  效果为

  

  其中$$这种是LeTeX的语法

  title()第一个参数表示横坐标的位置, 第二个参数是纵坐标的位置

  grid(True)增加网格显示

  关于annotate函数

plt.annotate(s, xy=arrow_crd, xytext=text_crd, arrowprops=dict)

    s: 要注解的字符串

    xy: 箭头所在的位置, 元组类型

    xytext: 文本显示的位置, 元组类型

    arrowprops: 定义了整个箭头显示的属性, dict()

      facecolor="颜色" 箭头的颜色

      shrink 起始会按照指定的比例缩进, 这样箭头与两边的内容会留有一下空白

      width 箭头的宽度

  具体代码如下

import numpy as np
import matplotlib.pyplot as plt a = np.arange(0.0, 5.0, 0.02)
plt.plot(a, np.cos(2*np.pi*a)+2, 'r--') plt.xlabel("X轴: 时间", fontproperties="FangSong", fontsize=15, color='green')
plt.ylabel("Y轴: 振幅", fontproperties="FangSong", fontsize=15)
plt.title(r'正玄波实例$y=cos(2\pi x)$', fontproperties="SimHei", fontsize=25)
plt.annotate(r"$\mu=100$", xy=(2, 3), xytext=(3, 3.5), arrowprops=dict(
facecolor="black", shrink=0.1, width=2
)) plt.axis([-1, 6, 0, 4])
plt.grid(True)
plt.savefig('test3', dpi=600)
plt.show()

  效果为

  

1.5 绘制子绘图区域

  使用subplot可以进行简单的分区, 具体实现复杂的分区需要另一个函数

  plt.subplot2grid()

plt.subplot2grid(GridSpec, CurSpec, colspan=1, rowspan=1)

    基本使用方法是: 先将整个布局进行均分, 然后指定一块小区域作为起始点, 然后使用colspan和rowspan来在横向和纵向上增加小块的个数

    GridSpec: 整体划分, 元组类型

    CurSpec: 指定起始小块位置, 元组类型

    colspan: 横向小块数量

    rawspan: 纵向小块数量

    选择实例:

    

  使用GridSpec类可以简化操作

    导入

import matplotlib.gridspec as gridspec

    生成gridspec对象

gs = gridspec.GridSpec(3, 3)

    使用切片的方式来获取

    具体如下

    

2 基础绘图函数

2.1 基础图标函数概述

  使用绘制函数的基本思想:

    图像的种类是繁多的, 我们应该专注于选择与更合适的图表来结合数据, 而不是学习使用所有的函数

  

  

  

2.2 饼图的绘制

  常用于百分比的内容, 尤其是需要对比组成部分, 占有比例的时候, 更是直观

  生成饼图的函数pie

plt.pie(sizes, explode=(), labels=(), autopct="", shadow=False, startangle=90)

    sizes: 元组类型, 各个成分的占比

    explode: 元组类型, 优先级, 优先级高的会突出来, 为0是正常组成部分

    labels: 各个部分对应的标签名字, 要和sizes对应上

    autopct: 显示比例的格式

    shadow: 是否有阴影

    startangle: 起始绘图时候的角度, 和极坐标角度类似

  具体实例

import matplotlib.pyplot as plt

labels = "Python", "Java", "C/C++", "C#", "Javascript", "Other"
sizes = [31.2, 19.6, 15.9, 7.4, 3.6, 22.3]
explode = [0.1, 0, 0 ,0 , 0, 0] plt.pie(sizes, explode=explode, labels=labels, autopct="%.2f%%", shadow=True, startangle=90) plt.title(r'2015最受欢迎的编程语言', fontproperties="SimHei", fontsize=15)
plt.show()

  具体效果

  

  如果希望图形不是侧着的, 可以使用

plt.axis('equal')

2.3 直方图的绘制

  使用hist画直方图

hist(x, bins, normed, histtype, facecolor, alpha)

    x: 处理的数据

    bins: 生成的图形中, 直方(在X轴上直立的长条矩形)的个数

      具体情况是: 找到x中的最小值和最大值, 然后在这个值域中均分bins份, 每一份都是一个小的值域, x中的元素就会对应的落在相应的值域中, Y轴的值就是在这个值域的数量(normed=False时)

    normed: 为True会归一化成概率, 为False时Y轴显示的是数量, 默认为False

    具体代码如下

import numpy as np
import matplotlib.pylab as plt np.random.seed(0)
mu, sigma = 100, 20
a = np.random.normal(mu, sigma, size=100) plt.hist(a, 30, normed=False, histtype='stepfilled', facecolor='b',
alpha=0.75)
plt.title("Histogram") plt.show()

  效果如下

  

2.4 极坐标的绘制

  绘制极坐标用

ax = plt.subplot(111, projection='polar')

    通过生成一个对象ax, 来绘制极坐标的图像

    通过ax.bar()来设置图像

bar(left, height, width=0.8, bottom=None, **kwargs)

      left: 绘制极坐标时的开始位置, 图中的某个位置

      height: 中心点向边界延伸的长度

      width: 旋转的宽度

  具体代码如下

import matplotlib.pylab as plt
import numpy as np N = 20
theta = np.linspace(0.0, 2*np.pi, N, endpoint=False)
radii = 10*np.random.rand(N)
width = np.pi/4*np.random.rand(N) ax = plt.subplot(111, projection='polar')
bars = ax.bar(theta, radii, width=width, bottom=0.0) for r, bar in zip(radii, bars):
bar.set_facecolor(plt.cm.viridis(r/10.))
bar.set_alpha(0.5) plt.show()

  具体效果为

  

2.5 散点图的绘制

  具体代码

import matplotlib.pylab as plt
import numpy as np fig, ax = plt.subplots()
ax.plot(10*np.random.random(100), 10*np.random.randn(100), 'o')
ax.set_title("simple Scatter") plt.show()

  具体效果

  

3 引力波的绘制

3.1 介绍

  引力波是因为时空弯曲对外以辐射形式传播的能量

  爱因斯坦的广义相对论预言了引力波的存在

3.2 编写

  产生时间序列

  读取应变数据

  绘制H1 Strain

  显示并保存图像   

数据展示Matplotlib的更多相关文章

  1. ExtJS 4.2 业务开发(二)数据展示和查询

    本篇开始模拟一个船舶管理系统,提供查询.添加.修改船舶的功能,这里介绍其中的数据展示和查询功能. 目录 1. 数据展示 2. 数据查询 3. 在线演示 1. 数据展示 在这里我们将模拟一个船舶管理系统 ...

  2. WebGIS中利用AGS JS+eChart实现一些数据展示的探索

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 eChart提供了迁徙图.热点图.夜视图等跟地图能够很好的结 ...

  3. EasyUI-datagrid数据展示+MongoDB数据操作

    使用EasyUI-datagrid进行数据展示:进行添加,修改,删除操作逻辑代码,数据源来自MongoDB. 一.新建SiteInfo控制器,添加Index页面:http://www.cnblogs. ...

  4. C#-WinForm-ListView-表格式展示数据、如何将数据库中的数据展示到ListView中、如何对选中的项进行修改

    在展示数据库中不知道数量的数据时怎么展示最好呢?--表格 ListView - 表格形式展示数据 ListView 常用属性 HeaderStyle - "详细信息"视图中列标头的 ...

  5. iOS开发UI篇—无限轮播(新闻数据展示)

    iOS开发UI篇—无限轮播(新闻数据展示) 一.实现效果        二.实现步骤 1.前期准备 (1)导入数据转模型的第三方框架MJExtension (2)向项目中添加保存有“新闻”数据的pli ...

  6. UITaleView的基础使用及数据展示操作

    UITableView表视图,是实用的数据展示的基础控件,是继承于UIScrollView,所以也可以滚动.但不同于UIScrollView,UITableView只可以上下滚动,而不能左右滚动. 因 ...

  7. 【助教】Java获取数据库数据展示

    本文将给出一个最简单的Java查询数据库中一张表的数据并将查询结果展示在页面的例子. 实际上,我们要解决以下两个问题: Java与数据库交互(以JDBC为例) 数据展示在前台页面(以Servlet+J ...

  8. Jqgrid入门-结合Struts2+json实现数据展示(五)

    DEMO用的是ssh框架实现的,具体怎么搭建的就不多做说明了.分页表格的数据操作难点就是数据展现.至于增删改直接用hibernate原生的方法实现即可.         初步分析:表格要实现分页,那么 ...

  9. MVC实现登录,增删改查之数据展示:JSP的EL表达式(二)

    这里的数据展示利用jsp的EL表达式,后台放入session,前台EL获取 数据库设计是这样的,一个老师对应有多个学生,在学生表student中建立外键tid与老师表teacher的tid对应,现在老 ...

随机推荐

  1. 常用的Issue解决方案(EF框架)

    1.提交出错:ObjectStateManager 中已存在具有同一键的对象.    ObjectStateManager 无法跟踪具有相同键的多个对象. 遇到此问题,首先要确定的是主键是否赋值,以及 ...

  2. 跟着实例学习ZooKeeper的用法: 分布式锁

    锁 分布式的锁全局同步, 这意味着任何一个时间点不会有两个客户端都拥有相同的锁. 可重入锁Shared Reentrant Lock 首先我们先看一个全局可重入的锁. Shared意味着锁是全局可见的 ...

  3. ajax与一般处理程序 HTTP协议交互

    1,一般处理程序中 context.Response.ContentType = "text/plain", 则  ajax参数中 也是 text 类型. 2,一般处理程序中 转化 ...

  4. Django学习笔记之Django视图View

    一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. ...

  5. 基于SSM的单点登陆05

    springmvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...

  6. Python3.x: pyodbc+FreeTDS+UinxODBC连接sybase数据库(Linux系统)

    Python3.x: pyodbc+FreeTDS+UinxODBC连接sybase数据库(Linux系统) 一.安装UinxODBC以及依赖包 yum -y install gcc gcc-c++ ...

  7. jz2440存储管理实验【学习笔记】

    平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山一期视频学习笔记 简介:先来简单的说明一下这次的实验,看看下图,我们的程序通过烧录器下载到nandflash当中去,之后在启动的时 ...

  8. Kotlin 卸载APP自身

    package com.example.batdw01.myapplication import android.net.wifi.WifiManager import android.support ...

  9. 织梦导航 currentstyle 点击li添加class类 样式

    <!--导航开始--> <div class="global_nav_wrap"> <ul class="nav nav-pills&quo ...

  10. Linux新手常用命令 - 转载

    开始→运行→cmd命令 集锦 cls------------命令窗清屏eqit-----------退出当前命令ping ip--------检查网络故障ipconfig-------查看IP地址wi ...