@[DataWhale打卡]第一回:Matplotlib初相识
一、认识matplotlib
- pandas和seaborn的绘图接口其实也是基于matplotlib所作的高级封装。
- 可以说这是一个基于numpy的包?matplotlib总是和numpy同时出现。
import matplotlib.pyplot as plt
import numpy as np
二、一个最简单的绘图例子
核心概念:Matplotlib的图像是画在figure(如windows,jupyter窗体)上的,每一个figure又包含了一个或多个axes(一个可以指定坐标系的子区域)。
画图的两个基本思路(区别在于是否自己给出figure&ax)
#思路一
fig, ax = plt.subplots() # 创建一个包含一个axes的figure
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]) # 绘制图像
#思路二
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
(作为之前总用matlab的数学人,最初在许多代码上看思路一上列出很多个ax.,总是感觉很头疼,其实只是一个画图的不同思路。)
三、Figure的组成
完整的matplotlib图像通常会包括以下四个层级:
- Figure:顶层级,用来容纳所有绘图元素
- Axes:matplotlib宇宙的核心,容纳了大量元素用来构造一幅幅子图,一个figure可以由一个或多个子图组成
- Axis:axes的下属层级,用于处理所有和坐标轴,网格有关的元素
- Tick:axis的下属层级,用来处理所有和刻度有关的元素
(知道一个四层的概念,具体的对应在下一节。)
四、两种绘图接口
其实就是对应两种绘图思路:
matplotlib提供了两种最常用的绘图接口
- 显式创建figure和axes,在上面调用绘图方法,也被称为OO模式(object-oriented style)
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')
ax.set_ylabel('y label')
ax.set_title("Simple Plot")
ax.legend()
- 依赖pyplot自动创建figure和axes,并绘图
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()
作业
Q:你在工作或学习中通常何时会用到数据可视化,希望通过可视化达到什么目的?
A:
1.更清晰的区分(统计中)
2.更直观的表达(写论文时)
3.更好的感受参数或者某些值的变化(做实验时)
感谢DataWhale,真的很棒,期望后期加入。