Matplotlib——初级

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

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

其他说明:
- 一个figure(画布)可以包含多个axes(坐标系/绘图区),但是一个axes只能属于一个figure。
- 一个axes(坐标系/绘图区)可以包含多个axis(坐标轴),包含两个即为2d坐标系,3个即为3d坐标系
- 辅助显示层为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——初级的更多相关文章
- Python 的 Matplotlib 画图库
Matplotlib安装 NumPy库方便数值运算,但枯燥的数据并不利于人们的直观理解. 数据需要可视化. Matplotlib:一个数据可视化函数库 使用前需要安装 利用Python自带 ...
- 【Python】一份非常好的Matplotlib教程
Matplotlib 教程 本文为译文,原文载于此,译文原载于此.本文欢迎转载,但请保留本段文字,尊重作者和译者的权益.谢谢.: ) 介绍 Matplotlib 可能是 Python 2D-绘图领域使 ...
- python 数据可视化(matplotlib)
matpotlib 官网 :https://matplotlib.org/index.html matplotlib 可视化示例:https://matplotlib.org/gallery/inde ...
- python入门-分类和回归各种初级算法
引自:http://www.cnblogs.com/taichu/p/5251332.html ########################### #说明: # 撰写本文的原因是,笔者在研究博文“ ...
- Matplotlib——中级
关于Matplotlib的愚见 初级中,我只是简单介绍了Matplotlib的使用方法,在中级部分,我系统地说一下我总结的内容. 上图是我画的关于Matplotlib几个对象之间的关系图.它们都来自于 ...
- Python数据分析-Matplotlib图标绘制
Matplotlib介绍 Matplotlib是一个强大的Python绘图和数据可视化的工具包. Matplotlib的主要功能 Matplotlib是python中的一个包,主要用于绘制2D图形(当 ...
- Matplotlib散点图、条形图、直方图-02
对比常用统计图 折线图: 特点:能够显示数据的变化趋势,反映事物的变化情况.(变化) 直方图: 特点:绘制连续性的数据,展示一组或者多组数据的分布情况(统计) 条形图: 特点:绘制离散的数据,能够一眼 ...
- Matplotlib介绍
目录 一. Matplotlib介绍 1 二. 初级绘制 1 1. 绘图简介 1 2. 在上面的过程中,主要就是下面三个元素: 1 三. 2D各种 ...
- 马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)
马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)目录详情:18_02_ssl协议.openssl及创建私有CA18_03_OpenSSH服务及其相关应用09_01_磁盘及文 ...
随机推荐
- Codis3.2 安装部署
转载请注明出处:https://www.cnblogs.com/format-ch/p/9323841.html 一.软件下载 下载 下载 zookeeper (Codis注册中心) http://m ...
- java JDBC链接sqlserver/mysql/oracle
今天初学数据库的一些简单创建数据库和表,并进行简单的查询,插入. 接下学习的就是java工程中怎么链接数据库呢.主要的方法和用到的类如下. 切记,mysql需要的jar包 mysql-connecto ...
- C语言string.h中常用字符函数介绍
原文:http://www.cnblogs.com/xuwenmin888/archive/2013/05/03/3057883.html strcpy 函数名: strcpy 功 能: 拷贝一个字符 ...
- HTML 5篇(持续更新)
1.sessionStorage .localStorage 和 cookie 之间的区别 (一)共同点:都是保存在浏览器端,且同源的. (二)区别:cookie数据始终在同源的http请求中携带(即 ...
- wpf 转型 android开发总结
今年马上就要过去了,这一年中我经历了从wpf转型到qt/qml,然后最近又要开始搞android,从我个人的经验来看不论是qml还是android从框架和设计上都跟wpf类似,并且移动端的设计因为很多 ...
- c++实现对输入数组进行快速排序
#include "stdafx.h" #include <iostream> #include <string> #include <vector& ...
- java几种基本排序算法
1.选择排序 原理:将数组的每一个元素和第一个元素相比较,如果小于第一个元素则交换,选出第一小的,依次选出第二小,第三小的.... 代码 int[] a = {1,3,2,5}; int i,j,te ...
- mongodb 3.4复制集详解
1关闭数据库,打开三个mongodb数据库数据库实例 rs.printReplicationInfo() 2:原理 主库能够进行读写操作,一个复制集群只能有一个活跃的主库 一般情况下复制可以分为好几种 ...
- MySQL案例01:Last_SQL_Errno: 1755 Cannot execute the current event group in the parallel mode
周五同事监控报警,有个MySQL从库复制状态异常,让我帮忙排查下,经过排查发现是MySQL5.6并行复制的一个Bug所致,具体处理过程如下: 一.错误信息 登录mysql从库服务器,检查复制状态 my ...
- windows系统的错误码
https://blog.csdn.net/u011785544/article/details/51682290