第一回:Matplotlib初相识
1、认识 Matplotlib
Matplotlib是一个Python 2D绘图库,能够以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形,用来绘制各种静态,动态,交互式的图表。
Matplotlib是Python数据可视化库中的泰斗,它已经成为python中公认的数据可视化工具,我们所熟知的pandas和seaborn的绘图接口其实也是基于matplotlib所作的高级封装。
2、Matplotlib 初试
- 显式创建figure和axes,在上面调用绘图方法,也被称为OO模式(object-oriented style)
import matplotlib.pyplot as plt
import numpy as np
# 两种绘图接口
# 1、面向对象思想 OO
x = np.linspace(0, 2, 100)
# 通过显示创建 fig 和 axes 对象, 面向对象思想
fig, ax = plt.subplots()
# 通过 ax 对象添加图中的信息
# 添加线条信息
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()
# 显示图像
plt.show()
复制代码
- 依赖pyplot自动创建figure和axes,并绘图
import matplotlib.pyplot as plt
import numpy as np
# 两种绘图接口
# 2、依赖pyplot自动创建figure和axes,并绘图
x = np.linspace(0, 2, 100)
# 通过显示创建 fig 和 axes 对象, 面向对象思想
# 添加线条
plt.plot(x, x)
plt.plot(x, x ** 2)
plt.plot(x, x ** 3)
# 显示图例
# plt.legend()
# 可以在显示图例的时候 通过List的方式 添加每条直线的名称
plt.legend(['linear' 'quadratic', 'cubic'])
# 显示坐标轴名称
plt.xlabel('x label')
plt.ylabel('y label')
# 显示标题
plt.title('Simple plot')
plt.show()
复制代码
3、Figure 的组成
完整的一个图像窗口中呈现的,即为一个 Figure;
- Figure:一个图像窗口,一次程序中可以创建多个 Figure,每个 Figure 通过一个窗口显示;
- Axes: 一个 Figure 当中的子图概念,一个 Figure 可以有多个 Axes;
- Axis: Axes 的下一层级,一个 Axes 可以有多个 Axis (几个维度,2维有2个), 用来设置和坐标轴、网格相关的元素;
- Tick:Axes 的下一层级,用来设置每个轴的坐标刻度有关的元素;
1、Figure 的设置
import matplotlib.pyplot as plt
import numpy as np
# 两种绘图接口
x = np.linspace(-2, 2, 100)
# 通过显示创建 fig 和 axes 对象, 面向对象思想
# 添加到不同的 figure
plt.figure()
# 设置 figure 的名称和 大小
# plt.figure(num=3, figsize=(10, 10))
# 添加线条
plt.plot(x, x)
plt.figure()
# 添加线条
plt.plot(x, x ** 2)
# 修改线条的样式
plt.plot(x, x ** 3, color='red', linewidth=2, linestyle='--')
plt.show()
复制代码
图像显示:
2、坐标轴的设置
import matplotlib.pyplot as plt
import numpy as np
# 两种绘图接口
x = np.linspace(-2, 2, 100)
# 通过显示创建 fig 和 axes 对象, 面向对象思想
# 添加到不同的 figure
plt.figure()
# plt.figure(num=3, figsize=(10, 10))
# 添加线条
plt.plot(x, x)
plt.plot(x, x ** 2, color='red', linewidth=2, linestyle='--')
# 坐标轴设置
# 轴的范围
plt.xlim(-1, 2)
plt.ylim(0, 1)
# 轴的名称
plt.xlabel('I am X')
plt.ylabel('I am Y')
# 轴的刻度 以及 刻度的转化显示 ticks
# x 的刻度从 -2,2 分成 10 份显示
plt.xticks(np.linspace(-2, 2, 10))
# y 的刻度转化
plt.yticks([0, 0.2, 0.4, 0.6, 0.8, 1],
['a', 'b', 'c', 'd', 'e', 'f'])
# axes 的设置
ax = plt.gca()
# 设置右边界不显示颜色
ax.spines['right'].set_color('none')
# 设置左边界不显示颜色
ax.spines['top'].set_color('none')
# 设置 x 轴为下边界
ax.xaxis.set_ticks_position('bottom')
# 设置 y 轴为左边界
ax.yaxis.set_ticks_position('left')
# y 轴改变位置的方式
ax.spines['left'].set_position(('data', -2))
# x 轴改变位置
ax.spines['bottom'].set_position(('data', 0))
plt.show()
复制代码
图像显示:
3、图例的显示
import matplotlib.pyplot as plt
import numpy as np
# 两种绘图接口
x = np.linspace(-2, 2, 100)
# 通过显示创建 fig 和 axes 对象, 面向对象思想
# 添加到不同的 figure
plt.figure()
# plt.figure(num=3, figsize=(10, 10))
# 添加线条
l1, = plt.plot(x, x)
l2, = plt.plot(x, x ** 2, color='red', linewidth=2, linestyle='--')
# 坐标轴设置
# 轴的范围
plt.xlim(-1, 2)
plt.ylim(0, 1)
# 轴的名称
plt.xlabel('I am X')
plt.ylabel('I am Y')
# 图例的设置
# handles : 线条对象
# lebels :handles 中对应线条的名称
# loc : 图例显示的位置 best : 自动适应 找到数据少的位置显示
plt.legend(handles=[l1, l2, ], labels=['line1', 'line2'], loc='best')
plt.show()
复制代码
图像显示:
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END