Matplotlib学习笔记1 - 上手制作一些图表吧!

Matplotlib是一个面向Python的,专注于数据可视化的模块。

快速上手

这是使用频率最高的几个模块,在接下来的程序中,都需要把它们作为基础模块

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

第一个图表

使用pyplot.plot函数,可以在坐标轴上画一条曲线。

plt.plot([1,2,3,4],[2,1,3,4])
plt.show()

image

让图表变得更加可读

使用pyplot.xlabelpyplot.ylabel可以给图表的x轴与y轴进行标注;使用pyplot.title给图表起一个标题。在这个例子中,分别绘制了两次曲线,分别标注为了'original'和'cos',使用pyplot.legend可以为图表增加一个图例。

# Generate some data
x=np.arange(0,10,0.2)
y=np.cos(x)


# Plot the figure
plt.plot(x,x,'r-',label='original')
plt.plot(x,y,'b-',label='cos')

# Some decoration
plt.xlabel('Enter a')
plt.ylabel('Enber b')
plt.title('My first chart')
plt.legend()

plt.show()

image

图表的组成部分

这是一个Matplotlib图表的组成示意图。

image

Figure: Figure囊括了整个图表(包括曲线啦~标题啦~坐标之类的),它有若干下属Axes子类

Axes:Axes是Figure的附属子类,包含了作图的区域。一般来说每个Axes会包含2个Axis类,在三维图中则含有3个。

绘制函数所支持的输入数据类型

并不是所有的数据都能顺利地被pyplot的绘制函数识别并绘成图表。一般来说函数支持numpy.arraynumpy.ma.masked_array,或者可以被numpy.asarray转化(例如numpy.matrix)的数据类别。

Pyplot也支持通过一个“字典”来存储并运用数据,只需要在绘制函数中给出data关键字的参数,就可以通过字典的key,将字典中的数据导入绘制函数中。在下面的例子中,我们把各种变量存在'data'字典中,并通过下标来引用在在字典中的数据。

data = {'a': np.arange(50),
        'c': np.random.randint(0, 50, 50),
        'd': np.random.randn(50)}
data['b'] = data['a'] + 10 * np.random.randn(50)
data['d'] = np.abs(data['d']) * 100

fig, ax = plt.subplots(figsize=(5, 2.7), layout='constrained')
ax.scatter('a', 'b', c='c', s='d', data=data)
ax.set_xlabel('entry a')
ax.set_ylabel('entry b')

image

代码风格

显式交互与隐式交互

我们有两种不同的方式(或者说是两种不同的风格,因为本质上它们没有很大的区别)来与Matplotlib交互:

  • 显式交互(Explicit interface)

显式地申明Figure与Axes变量,并通过它们调用函数(“面向对象” object-oriented 风格)

  • 隐式交互(Implicit interface)

通过pyplot模块间接创建Figure和Axes,并用pyplot函数来绘图