3.3. Matplotlib 输入数据#
Show code cell content
import matplotlib.pyplot as plt
import numpy as np
可接收的数据#
Matplotlib 通常会和 pandas 和 NumPy 一起使用,Matplotlib 可绘制的数据大致有:
NumPy 数组(
numpy.array
)或numpy.ma.masked_array
。可以转换为 NumPy 数组的对象。如 pandas 数据和
numpy.matrix
。也可以使用numpy.asarray()
方法将其他类型的数据转化为 NumPy 数据。Key-Value 数据结构:比如字典(dict),结构化的有 Key-Value 结构的 Numpy 数组(Structured NumPy Array)或 pandas DataFrame。Matplotlib 允许通过 data 参数传递这些对象,并传递与 x 和 y 变量对应的字符串。
案例:Key-Value 数据#
输入为 Key-Value 的数据,Value 为用 NumPy 库随机生成 50 个点,并用 scatter()
方法作出散点图.
# 设置随机数种子以确保结果的可复现
np.random.seed(123)
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')
Text(0, 0.5, 'entry b')

具体来说,共有 5 个步骤。
第一步: 构建字典,a
为 0,1,2,…,49 五十个数作为横坐标 x,c
为五十个随机整数作为画图的颜色,d
为五十个随机数作为每个圆点的大小。
第二步: 对 a
做变换得到 b
,作为画图纵坐标 y;由于点的大小不应该为负数,因此用 np.abs()
取绝对值。
第三步: 用前述 plt.subplots()
方法生成 fig
和 ax
。
第四步: 在 ax 上画点图,写明参数 x='a', y='b', c='c', s='d',data=data
,c(color) 指明颜色,s(size) 指明大小,data 来自于我们构建的字典,因此参数中使用的时候,相当于使用字典的 key
字符串,需要有引号。
第五步: 用 set_xlabel()
和 set_ylabel()
方法为 x 轴和 y 轴添加文本标签,也就是轴标题。