移动app设计网站建设建设公司网站大概需要多少钱?
一、引入
Matplotlib 是一个Python的综合库,用于在 Python 中创建静态、动画和交互式可视化。
本教程包含笔者在使用Matplotlib库过程中遇到的各类完整实例与用法还有遇到的库理论问题,可以根据自己的需要在目录中查询对应的用法、实例以及第四部分关于理论的讨论。
教程参考了Eric Matthes的Python Crash Course中的Matplotlib部分和Matplotlib官方示例。
如果你希望了解更详细的用法和实例,可以查看Matplotlib官方网站和Python Crash Course。
二、用法部分
①基础类
1.安装Matplotlib
sudo pip install matplotlib # in Linux
2.引用Matplotlib常用模块
import matplotlib.pyplot as plt # 引入matplotlib的pyplot模块
3.绘制图形
values = [1, 2, 3, 4, 5] # x值列表
squares = [1, 4, 9, 16, 25] # y值列表
plt.plot(values, squares) # 绘图
4.查看图形
plt.show() # 打开matplotlib查看器,显示绘制的图形
5.保存图形
plt.savefig("file_name.png",bbox_inches="tight")#保存文件,bbox_inches可选择是否紧凑裁剪
②调节设置类
1.线宽调节
plt.plot(x, y, linewidth=5) # 线宽设置为5
2.设置标题
Figure标题
figure标题在整个figure的上部正中。
fig.suptitle("figure_suptitle") # 为Figure设置标题
Axes标题
ax.set_title("title") # 为Axes设置标题
一般情况标题
对于不区分axes和figure的情况,比如一个figure里只有一个axes,以下命令也可以使用
plt.title("title", fontsize=24) # 设置标题,字体大小设置为24
3.设置轴标签
plt.xlabel("Value", fontsize=14) # 设置图标题x轴标签,字体大小设置为14
plt.ylabel("Square of Value", fontsize=14) # 设置y轴标签,字体大小设置为14
4.设置轴刻度
plt.tick_params(axis="both", which="major", labelsize=14) # 设置各轴刻度为等距,标签大小设置为14,major为应用参数的刻度组
5.隐藏坐标轴
若对图像有洁净的追求,希望隐去坐标轴,可以使用
plt.axis("off") # 隐藏坐标轴
6.设置figure尺寸
plt.figure(figsize=(10, 6)) # 设置figure尺寸,单位为英寸
7.设置轴
ax为一个axes artist,设置x轴与y轴的限幅,并设置x轴和y轴的标签
ax.set(xlim=[0, 3], ylim=[-4, 10], xlabel='Time [s]', ylabel='Z [m]')
8.设置标签
为点设置格式化标签
需要格式化的标签时,为label添加f
scat = ax.scatter(t[0], z[0], c="b", s=5, label=f'v0 = {v0} m/s') # 需要格式化的标签时,为label添加f
9.设置图例
ax.legend() # 将添加过label的artists添加到四角的图例上
③数值处理类
1.生成x值和对应y值[规律]
法1:range()
和法3类似,法3更优
values = list(range(1, 101)) # list搭配range生成多个数的列表
squares = [value ** 2 for value in values] # 根绝values生成squares
法2:numpy.linspace()
注:该方法引用Numpy库
x = np.linspace(0, 2 * np.pi, 200) # np.linspace(起始点,终止点,采样个数)
y = np.sin(x)
法3:np.arange()
和法1类似,优势在于不用再转一次列表。
注:该方法引用Numpy库
x = np.arange(0.0, 2.0, 0.01)
2.生成x值和对应y值[随机]
④常见图形类
1.生成点
plt.scatter(values, squares, color="red", s=10) # 绘制散点图,s为点大小,color为颜色
2.生成线
生成线的本质是生成足够多的点,使之连结,在视觉上呈现线的感觉。
x = np.linspace(0, 2 * np.pi, 200) # 生成足够多的x
y = np.sin(x) # 生成足够多对应的y
plt.plot(x, y) # 绘图
⑤美化类
1.颜色映射
颜色映射可以将数值大小映射为颜色深浅,从而绘制出数值与颜色相关的图像,比如温度低的位置颜色浅,温度高的地方颜色深。
法1:数值颜色映射
plt.scatter(x, y, c=y, cmap="Reds") # 颜色映射
# https://matplotlib.org/stable/gallery/color/colormap_reference.html#sphx-glr-gallery-color-colormap-reference-py
如果按照点的先后顺序颜色映射,需要先为规则c生成数值列表
法2:顺序颜色映射
points_number = list(range(101)) # 生成0~100的cmap顺序列表
plt.scatter(x, y, c=points_number, cmap="Blues", s=5) # 按照顺序颜色映射
⑥动画类
在主代码中写出绘画0时刻的图的代码
三、实例部分
查看github或gitee上的实例代码
四、理论部分
1.Artist、Figure、Axes、Axis的区别
Artist
基本上,图形上可见的所有内容都是Artist,包括Figure、Axes和Axis对象。
Text对象、Line2D对象、collections对象、Patch 对象等也是Artist。
当 Figure 被渲染时,所有的 Artists 都被绘制到画布上。
大多数Artist和Axes挂钩,不能在Axes间切换也不能被Axes共享。
Figure
Figure是整个图形,可以看做窗口,一个Figure可以包含多个Axes。
Figure可以用pyplot.figure()单独创建
fig = plt.figure() # 创建无Axes的空Figure窗口
fig, ax = plt.subplots() # 创建带有一个Axes的Figure
Figure也可以用pyplot.subplots()和Axes一起创建。
Axes
Axes 是附加到 Figure 的 Artist,它包含一个用于绘制数据的区域。
Axes通常用pyplot.subplots()和Figure一起创建。
使用axes_name.plot()来绘制数据
fig, ax = plt.subplots() # 创建带有一个Axes的Figure
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]) # 在Axes上绘制数据
一个Figure上可以有多个Axes。
fig, axs = plt.subplots(2, 2) # 创建一个带有2X2个Axes的Figure
Axis
一个Axes通常包含两个带有刻度和刻度标签Axis,在3D情况下,一个Axes包含3个Axis,这和我们日常生活中的xyz坐标系含有x、y、z轴是相同的概念。
2.输入数据的要求
Matplotlib要求输入的数据格式为numpy的array,也就是numpy数组。
List与Array区别
list是python的内置数据类型,而 array数组需要导入numpy库,不属于内置类型。
list中的数据类不必相同的,即每个元素可以是不同的数据类型。
而array则是由numpy封装,存放的元素都是相同的数据类型。
Matrix的输入
矩阵Matrix无法直接作为数据输入,需要先通过numpy.asarray()转化为"类数组"才能输入Matplotlib
a = np.matrix([[1, 2], [3, 4]]) # a为numpy矩阵Matrix
a_asarray = np.asarray(a) # a转化为类数组a_asarray