在做各种实验之后,往往需要写报告,而写报告就需要制作各种图表。而图表又需要使用不同的颜色来区分数据,比如数据重叠区,比如数据交叉区。使用颜色来区分,让别人一眼就明白不同的区域,明白这些区域的作用。
要解决这些问题,那么就需要学会在matplotlib里怎么样来填充图形区域。先从简单的图形开始进行学习,比如下面就是填充三角形和四边形:
主要通过调用函数fill()函数来进行填充,它的定义如下:
matplotlib.pyplot.fill(*args, data=None, **kwargs)
- *args:这个参数主要填写有序数对和颜色。每个多边形可以使用x坐标和y坐标构造,只要把这些点连接一起,再把里面的空间进行指定的颜色填充。
-
ax.fill(x, y) # 使用默认的颜色填充一个多边形
-
ax.fill(x, y, “b”) # 使用蓝色填充一个多边形
-
ax.fill(x, y, x2, y2) # 使用默认颜色填充两个多边形
-
ax.fill(x, y, “b”, x2, y2, “r”) # 一个蓝色,一个红色
接着就可以看明白上面例子实现的代码了:
import numpy as np
import matplotlib.pyplot as plt
#
plt.figure('deepinout.com 极客笔记')
fig, host = plt.subplots() #创建子图
host.grid(False)
host.set_xlim(0, 100)
host.set_ylim(0, 100)
#填充三角形
x = [10, 20, 30]
y = [20, 80, 20]
host.fill(x, y, color = 'b')
#填充四边形
x = [40, 50, 50, 40]
y = [20, 20, 40, 40]
host.fill(x, y, color = 'r')
plt.show()
在这个例子里非常简单,先填充一个三角形,接着填充一个四边形,它的数据直接定义在列表里。x表示X轴的坐标, y表示Y轴的坐标,当进行填充时,依次从X轴取一个坐标,再从Y轴取一个坐标,就可以构造一个点,再把这些点连接到一起,就完成一个密封的多边形,再进行填充指定的颜色。
在函数的定义里,可以看到参数data=None,这个参数主要是定义数据的来源方式,它是一个可以迭代的对象,比如数据来源于字典对象的文件。下面的例子演示这个参数的作用:
import numpy as np
import matplotlib.pyplot as plt
#
plt.figure('deepinout.com 极客笔记')
fig, host = plt.subplots() #创建子图
host.grid(False)
host.set_xlim(0, 100)
host.set_ylim(0, 100)
#填充三角形
host.fill("time", "signal",
data={"time": [0, 50, 80], "signal": [0, 60, 0]}, color = 'b')
plt.show()
可见,前面两个参数是两个字符串,它是字典里的key,接着多边形点就是从字典里依次地获取。显示的结果如下: