matplotlib用户指南


版本是matplotlib

1. matplotlib

matplotlib是一个使用python实现数据可视化的库。

2. 图形的组成

图的组成
Figure:整个图形。一个Figure可以有1个或任意个Axes。
使用pyplot创建图形

fig = plt.figure()
fig, ax = plt.subplots()
fig, axs = plt.subplots(2, 2)

在这里插入图片描述

在这里插入图片描述

Axes:坐标轴。一个Figure可以包含许多Axes,但一个Axes只能属于一个Figure。Axes可以包含2个或3个Axis(轴)。
Axis:轴。他们负责设置图形限制并生成刻度(轴上的标记)和刻度标签(标记刻度的字符串)。刻度的位置由Locator对象确定,刻度标签字符串由Formatter格式化。
Artist:基本上,在图形中看到的所有东西都属于Artist,甚至包括Figure,Axes,Axis。在渲染Figure时,几乎所有的Artist都会被画到canvas(画布)上。
Title:图形的标题。
Y axis label:Y轴的标签。
X axis label:X轴的标签。
Major tick:大刻度。
minor tick:小刻度。
Legend:图例。
Grid:网格。

3. 绘图函数(plotting functions)的输入类型

绘图函数希望的输入的是np.array或np.ma.masked_array。类数组的对象(如:pandas数据对象,np.matrix)可能不能正常工作,需要转换为np.array对象。

4. matplotlib, pyplot, pylab有什么关系

matplotlib是整个包,matplotlib.pyplot是matplotlib包中的一个模块。
对于pyplot模块中的函数而言,总是针对“当前”图形和坐标轴的。方便快速绘图matplotlib通过pyplot模块提供了一套和MATLAB类似的绘图API,将众多绘图对象所构成的复杂结构隐藏在这套API内部。

pylab也是matplotlib包下的一个子模块。其中包括了许多NumPy和pyplot模块中常用的函数,方便用户快速进行计算和绘图,十分适合在IPython交互式环境中使用。

5. 面向对象接口和pyplot接口

通常,使用matplotlib有如下两种方式:

  1. 显式创建figures和axes,然后调用它们的方法来绘图。
  2. 依赖pyplot自动创建和管理figures和axes,然后调用pyplot的方法来绘图。

方式1

import numpy as np
import matplotlib.pyplot as plt


x = np.linspace(0, 2, 100)

fig, ax = plt.subplots() # 创建一个图形和一个坐标轴
ax.plot(x, x, label='linear') # 在此坐标轴中绘制一个图形
ax.plot(x, x**2, label='quadratic') # 在此坐标轴中绘制一个图形
ax.plot(x, x**3, label='cubic') # 在此坐标轴中绘制一个图形
ax.set_xlabel('x label') # 为此坐标轴添加x-label
ax.set_ylabel('y label') # 为此坐标轴添加y-label
ax.set_title("Simple Plot") # 为此坐标轴添加标题
ax.legend() # 添加一个图例

在这里插入图片描述
方式2

x = np.linspace(0, 2, 100)

plt.plot(x, x, label='linear')
plt.plot(x, x**2, label='quadratic')
plt.plot(x, x**3, label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()

关于两种(其实还有第三种,在GUI中绘图)绘图方式的选择:

通常,pyplot用于交互式绘图(例如,在Jupyter笔记本中),而OO-style用于非交互式绘图(在打算作为较大项目的一部分重复使用的函数和脚本中)

通常,人们会发现使用不同的数据集一遍又一遍地绘制相同的图,所以需要写属于自己的绘图函数(plotting functions):

def my_plotter(ax, data1, data2, param_dict):
	"""
	a hlper function to make a graph
	Parameters
	----------
	ax: Axes
		The axes to draw to
	data1: array
		The x data
	data2: array
		The y data
	param_dict: dict
		Dictionary of kwargs to pass to ax.plot
	Returns
	---------
	out: list
		List of artists added
	"""
	out = ax.plot(data1, data2, **param_dict)
	return out

这样使用:

data1, data2, data3, data4 = np.random.randn(4, 100)
fig, ax = plt.subplots(1, 1)
my_plotter(ax, data1, data2, {'marker': 'x'})

在这里插入图片描述
创建1行2列的子图:

fig, (ax1, ax2) = plt.subplots(1, 2)
my_plotter(ax1, data1, data2, {'marker': 'x'})
my_plotter(ax2, data3, data4, {'marker': 'o'})

在这里插入图片描述

6. 总结

本博文只是对matplotlib官方文档中的用户指南的转译,如有谬误请指出。

7. 参考文献

[1] matplotlib官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值