matplotlib是一个专门用来绘图的库,在分析数据的时候,使用它可以将数据进行可视化,更直观的呈现。下面是几个通过matplot绘制的图。

通过图形的绘制,我们可以很清晰地看到数据直接的关系,并对这些关系进行分析,如果是传统的一行行数据,在我们分析时是很不直观的。

Matplotlib图像结构

其他说明:

  1. 一个figure(画布)可以包含多个axes(坐标系/绘图区),但是一个axes只能属于一个figure。
  2. 一个axes(坐标系/绘图区)可以包含多个axis(坐标轴),包含两个即为2d坐标系,3个即为3d坐标系
  3. 辅助显示层为Axes(绘图区)内的除了根据数据绘制出的图像以外的内容,主要包括Axes外观(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标轴刻度标签(tick label)、网格线(grid)、图例(legend)、标题(title)等内容。该层的设置可使图像显示更加直观更加容易被用户理解,但又不会对图像产生实质的影响。

pyplot基本绘图功能介绍

matplotlib是受MATLAB的启发构建的。MATLAB是数据绘图领域广泛使用的语言和工具。MATLAB语言是面向过程的。利用函数的调用,MATLAB中可以轻松的利用一行命令来绘制直线,然后再用一系列的函数调整结果。

matplotlib有一套完全仿照MATLAB的函数形式的绘图接口,那就是matplotlib.pyplot。pyplot是Matplotlib的子库,它提供了和matlab类似的绘图API,方便用户快速绘制2D图表。pyplot中基本包含了matplotlib的全部功能,我们一般也是对它进行操作的。

在使用的时候,我们可以通过下面语句进行数据的导入:

import matplotlib.pyplot as plt

让我们从例子中来看pyplot使用的基本操作。

import matplotlib.pyplot as plt    # 导入模块

# 1)创建画布(容器层)
plt.figure(figsize=(10, 5)) # 10为绘图对象长度,5为宽度
# 2)绘制折线图(图像层)
plt.plot([1, 2, 3, 4, 5, 6 ,7], [17,17,18,15,11,11,13])
# 3)显示图像
plt.show()

通过上面代码,我们创建出了下面的图像。

创建画布

每次我们打算绘制一个图形的时候,都需要一个画布,有的地方也称它为绘图对象。一般用plt.figure()函数来创建一个画布,比如:

通过figsize参数,我们可以设置画布的长度和宽度,单位是英寸;通过dpi参数,我们可以指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80。上面例子中,图像的宽度为:10*80=800像素。可以看到和下面的结果是一致的。

绘制图像

我们通常使用plt.plot来绘制一个图像。我们绘制图像的时候是需要一个画布的,我们可以使用上面的figure来具体设置一个画布,如果不需要精确设置画布的话,我们使用plot时,Matplotlib会自动帮我们生成一个画布。

下面是两个例子,他们设置的效果是一样的:

plt.plot(x, y, label="$cos($x^2)", color="red", linewidth=2)
plt.plot(x, y, "r-", label="cos($x^2)$")

让我们通过例子了解一下这几个参数:

(1)x、y:这两个数很容易理解,就是两个变量。我们在坐标轴上要确定一个点往往要确定两个值:横坐标值和纵坐标值。我们绘制图像的时候有很多种,有折线图和曲线图,都可以用它来设置。具体它们两个设置的区别会在后面例子中讲解。

(2)第三个参数:在第二个例子中,我们设置了第二个参数"r-",它的意思是设置红色的实线。

(3)label:设置图例中的内容。有时我们需要添加的是一些数据公式,我们可以在字符串前后添加“$”符号,Matplotlib就会使用它内嵌的latex引擎绘制我们写入的数学公式。在一些文本设置的时候,我们也会使用$符号,比如:r"$reall\ bad$"。中间的反斜杠是因为$中空格是不识别的,要加反斜杠进行转义,这样显示的英文字体会好看很多。

(4)color:如果我们不使用第三个参数的设置,这个参数可以用来指定线条颜色。

(5)linewidth:用于指定曲线的宽度。

图像输出

图像的输出有两种方式,一个是在直接显示,一个是保存成图片到本地

(1)直接显示

我们可以通过plt.show()函数显示图像,显示后会释放画布资源,如果在显示图像之后保存图片,将只能保存空图片。

(2)保存图片到本地

我们可以通过plt.savefig()函数将图像保存到指定路径,这里需要注意:如果直接显示和保存到本地都要有的话,保存到本地的操作要写到show函数前。比如:plt.savefig("D:\\demo.png")。

我们还可以通过设置dpi参数指定图像的分辨率,比如:plt.savefig("D:\\demo.png", dpi=120)。

辅助显示层

我们通过plt.plot函数绘制完图形之后,是一个很朴素的图,所有我们通常会加入辅助显示层来让整个图像变得丰满,下面会介绍几个常用的设置。

(1)显示图例

如果只在plt.plot()中设置label还不能最终显示出图例,还需要通过plt.legend()将图例显示出来,比如:

plt.legend(loc="best")

它的其他参数设置,如下图所示:

注意:如果设置为best,matplotlib会自动找一个合适的位置显示图例。

(2)设置当前绘图区标题

比如:plt.title("我的Matplotlib图")。

(3)X、Y轴标题

比如:plt.xlabel("时间")、plt.ylabel("温度")

(4)添加网格线

添加网格线我们使用函数:plt.grid()

综合例子

import matplotlib.pyplot as plt
import numpy as np x = np.linspace(-3, 3, 100) # 生成-3到3范围内的100个点。
y = x*4+1
z = x**2 plt.figure(figsize=(8,4))
plt.plot(x, y, label="$x*2+1$", color="red", linewidth=2)
plt.plot(x, z, "b--", label="$X^2$")
plt.plot([1, 2, 3, 4, 5, 6 ,7], [7,7,8,5,0.3,1,0.3], "k:", label="折线图")
plt.grid()
plt.legend(loc="best")
plt.show()

运行之后显示的图像如下:

Matplotlib三层架构总结

  • 容器层

    • 画板 Canvas
    • 画布 Figure
    • 绘制图形区 Axes
      • X轴
      • Y轴
  • 辅助显示层
    • 网格
    • 刻度
    • 刻度说明
    • 图例说明
    • 。。。
  • 图像层
    • 折线图
    • 散点图
    • 柱状图
    • 饼图
    • 直方图

Matplotlib——初级的更多相关文章

  1. Python 的 Matplotlib 画图库

    Matplotlib安装 NumPy库方便数值运算,但枯燥的数据并不利于人们的直观理解. 数据需要可视化. Matplotlib:一个数据可视化函数库 使用前需要安装  利用Python自带 ...

  2. 【Python】一份非常好的Matplotlib教程

    Matplotlib 教程 本文为译文,原文载于此,译文原载于此.本文欢迎转载,但请保留本段文字,尊重作者和译者的权益.谢谢.: ) 介绍 Matplotlib 可能是 Python 2D-绘图领域使 ...

  3. python 数据可视化(matplotlib)

    matpotlib 官网 :https://matplotlib.org/index.html matplotlib 可视化示例:https://matplotlib.org/gallery/inde ...

  4. python入门-分类和回归各种初级算法

    引自:http://www.cnblogs.com/taichu/p/5251332.html ########################### #说明: # 撰写本文的原因是,笔者在研究博文“ ...

  5. Matplotlib——中级

    关于Matplotlib的愚见 初级中,我只是简单介绍了Matplotlib的使用方法,在中级部分,我系统地说一下我总结的内容. 上图是我画的关于Matplotlib几个对象之间的关系图.它们都来自于 ...

  6. Python数据分析-Matplotlib图标绘制

    Matplotlib介绍 Matplotlib是一个强大的Python绘图和数据可视化的工具包. Matplotlib的主要功能 Matplotlib是python中的一个包,主要用于绘制2D图形(当 ...

  7. Matplotlib散点图、条形图、直方图-02

    对比常用统计图 折线图: 特点:能够显示数据的变化趋势,反映事物的变化情况.(变化) 直方图: 特点:绘制连续性的数据,展示一组或者多组数据的分布情况(统计) 条形图: 特点:绘制离散的数据,能够一眼 ...

  8. Matplotlib介绍

    目录 一.    Matplotlib介绍    1 二.    初级绘制    1 1.    绘图简介    1 2.    在上面的过程中,主要就是下面三个元素:    1 三.    2D各种 ...

  9. 马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)

    马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)目录详情:18_02_ssl协议.openssl及创建私有CA18_03_OpenSSH服务及其相关应用09_01_磁盘及文 ...

随机推荐

  1. thinkphp怎么把数据库中的列的值存到下拉框中

    1. 先去数据库中查值,查询整个数据表,结果为二维数组. $project = M("project"); $cell = $project->where(array('st ...

  2. mysql load data infile auto increment id

    1. 问题描述 当使用load data infile 向表中插入数据 而主键id是 auto_increment 时 ,执行 load data 不会报错 但插入也不成功 2. 问题解决 2.1 方 ...

  3. 盒模型的属性丶display显示丶浮动

    一丶盒模型的属性(重要) 1.padding padding是标准文档流,父子之间调整位置 <!DOCTYPE html> <html> <head> <me ...

  4. Apache服务器运维笔记(6)----目录 文件 网络容器的安全问题

    <Directory>.<Files>.<Location> 这三个容器的作用都很相似,都是以容器的形式来封装一组指令对访问进行控制,只是它们的区别在于作用于目录. ...

  5. Re-thinking Deep Residual Networks

    本文是对ImageNet 2015的冠军ResNet(Deep Residual Networks)以及目前围绕ResNet这个工作研究者后续所发论文的总结,主要涉及到下面5篇论文. 1. Link: ...

  6. C中atoi和strcpy的自定义实现

    这是两道经常考到的笔试题,看似简单的实现,其实专注到细节,还是有很多需要注意扣分的地方. atoi实现: #include <iostream> #include<ctype.h&g ...

  7. 【网络编程】TCP网络编程

    TCP网络程序设计 一.模型函数化 图片:TCP编程模型 1.1 创建套接字Socket #include <sys/types.h> /* See NOTES */ #include & ...

  8. C++:关于委托类

    转自:http://blog.csdn.net/dadalan/article/details/4041931.vs2010已经支持function/bind,能很好实现委托. [说明] 本文不仅介绍 ...

  9. 异步nodejs代码的同步样子写法样例

    异步nodejs代码的同步样子写法样例 js的异步嵌套太深代码将不好看.尤其在用node的时候这种情况会大量出现. 这里用node连接redis,做一个用户注册的简单例子来说明.例如用redis做存储 ...

  10. LeetCode-Maximal Rectangle [学以致用] ZZ

    http://www.cnblogs.com/lichen782/p/leetcode_maximal_rectangle.html 题目: Given a 2D binary matrix fill ...