Axes class
轴包含大部分图形元素:轴,刻度线,2D的线,文本,多边形等,并设置坐标系。
axes类的api
matplotlib.pyplot.axes
给当前图表添加轴或者返回当前轴,是有返回值的,返回的就是当前创建的或者当前激活的轴(axes类下的对象)。
matplotlib.pyplot.axes(arg=None, **kwargs)
一般会像课程中那样创建坐标系
# Creates axes of plot referenced 'ax'
ax = plt.axes()
matplotlib.axes.Axes.plot
绘制y与x作为线或其他格式。
Axes.plot(*args, data=None, **kwargs)
常用的调用形式如下:
ax.plot([x], y, [fmt], data=None, **kwargs)
ax.plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
点或线节点的坐标由x,y给出。
可选参数fmt是定义基本格式(如颜色,标记和线条样式)
比如
>>> plot(x, y) # plot x and y using default line style and color
>>> plot(x, y, 'bo') # plot x and y using blue circle markers
>>> plot(y) # plot y using x as index array 0..N-1
>>> plot(y, 'r+') # ditto, but with red plusses
可选的data就是录进一个数据集合,x和y可以从中去选值。
>>> plot('xlabel', 'ylabel', ' ',data=obj)
还有很多可选参数,有兴趣可以看下api文档
matplotlib.axes.Axes.arrow
Axes.arrow(x, y, dx, dy, **kwargs)
其实看函数名也大概想得出来,就是增加向量
x, y : float
原点
dx, dy : float
决定了沿x / y方向的箭头长度(当然也决定了方向)。
其余是可选参数
width: float (default: 0.001)
箭那条线的宽度,提醒下大家0.1就很粗了。
length_includes_head: bool (default: False)
计算长度的时候是不是算头的(如果是false就是线的尾端就是dx dy)
head_width: float or None (default: 3*width)
箭的头部的宽度
head_length: float or None (default: 1.5 * head_width)
箭的头部的长度
shape: [‘full’, ‘left’, ‘right’] (default: ‘full’)
绘制左半边,右半边或全箭头
overhang: float (default: 0)
箭的头部的形状改变,描述不好,尝试一下吧
head_starts_at_zero: bool (default: False)
如果为True,则箭线的开始部分在坐标0处绘制
还有很多其他参数,自行去尝试
matplotlib.pyplot.grid
主要作用是打开或者关闭网格
比较简单,没啥讲的,看下api文档吧
matplotlib.pyplot.grid(b=None, which='major', axis='both', **kwargs)
matplotlib.pyplot.grid
axes的图例
numpy.linalg.solve
求解线性矩阵方程或线性标量方程组。
详细是线性矩阵方程ax = b的“精确”解x。
numpy.linalg.solve(a, b)
numpy.dot
求点积,如果是一维的,就是简单相乘,二维的话
向量的点积结果跟两个向量之间的角度有关
numpy.dot(a, b, out=None)
numpy.allclose
numpy.allclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)
判断是否接近(在给定的rtol和atol的容错基础上)
absolute(a - b) <= (atol + rtol * absolute(b))
若满足这个不等式则返回True否则返回False
上三个可以结合计算和验证矩阵方程和他的解
>>> a = np.array([[3,1], [1,2]])
>>> b = np.array([9,8])
>>> x = np.linalg.solve(a, b)
>>> x
array([ 2., 3.])
>>> np.allclose(np.dot(a, x), b)
True
numpy.matmul
矩阵乘法,传入参数不同,乘法的方法会有所不同。
如果两个参数都是2-D,它们就像传统矩阵一样相乘。
如果任一参数是N-D,N> 2,则对最后两个的内容进行乘法操作,描述不如举例,看下面的例子
如果前后有某一个参数是1-D,则通过在其维度前加1来将其提升为矩阵。 在矩阵乘法之后,移除前置1。
不允许使用标量乘法,*可以用标量乘法。
numpy.matmul(a, b, out=None)
2*2
>>> a = [[1, 0], [0, 1]]
>>> b = [[4, 1], [2, 2]]
>>> np.matmul(a, b)
array([[4, 1],
[2, 2]])
n*1
>>> a = [[[1,2], [0,1]], [[0,1], [1,2]]]
>>> b = [[1, 2],[1,2]]
>>> np.matmul(a, b)
array([[[3, 6],
[1, 2]],
[[1, 2],
[3, 6]]])
1*2/2*1
>>> a = [[1, 0], [0, 1]]
>>> b = [1, 2]
>>> np.matmul(a, b)
array([1, 2])
>>> np.matmul(b, a)
array([1, 2])