一、 primitives 和 container的区别和联系是什么,分别用于控制可视化图表中的哪些要素
primitives跟可视化的数据直接挂钩,container更像是一种格式,container里面可以包含很多primitives。
- Figure可以理解成画板/绘画空间,我们所有的绘画内容都会呈现在Figure上,Figure包含所有的Axes(如果希望Figure有意义,则至少包含一个Axes)
- Axes :坐标轴组合,可以理解为坐标系(也可以理解为一个子图)。
- Axis:指的是具体的坐标轴,如x,y,z轴,Axes是Axis的复数形式,也就是代表着一套坐标轴。一套坐标轴可以构成一个绘画空间,所以我们也可以理解为子图
当我们只有一个Axes时,plt.plot()和ax.plot()作用相同,当我们有多个Axes时,则需要在对应的Axes里面绘图axs[i].plot()
Axis表示坐标轴,包含刻度和标签 - tick | labels
坐标轴组合,可以理解为坐标系(也可以理解为一个子图 - Tick 刻度,是Figure->Axes->Axis->Tick等级结构中最末端的容器对象
二、画出函数 y = -1 * (x - 2) * (x - 8) +10 在区间[2,9]的积分面积
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10,100)
y = -1 * (x - 2) * (x - 8) + 10
x2 = np.arange(2,9,0.1)
y2 = -1 * (x2 - 2) * (x2 - 8) + 10
fig,ax = plt.subplots()
ax.plot(x,y,color = 'red')
ax.bar(x2,y2,width = 0.05,alpha = 1,color = 'gray')
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title('Simple Plot')
ax.set_xlim(0)
ax.set_ylim(0)
plt.show()
运行结果如下:
x = np.linspace(0,10,100)
y = -1 * (x - 2) * (x - 8) + 10
x3 = np.linspace(2,9,100)
y3 = -1 * (x3 - 2) * (x3 - 8) + 10
fig,ax = plt.subplots()
ax.plot(x,y,color = 'red')
ax.fill_between(x3,y3,0,color = 'gray')
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title('Simple Plot')
ax.set_xlim(0)
ax.set_ylim(0)
plt.show()
运行结果如下: