matplotlib---->绘图库,有利于数据的可视化
np.linspace函数参数说明:
start | 起始点 |
stop | 终止点 |
num | 生成的样本数,默认是50。必须是非负 |
endpoint | 如果是真,则一定包括stop,如果为False,则一定不包括stop |
figure函数:创建图纸, 参数figsize(x,y)定义图纸的长和高,dpi:dots per inch,就是一英寸上有多少个点
subplot函数:subplot作用是 把一个绘图区域分成多个小区域,用来绘制多个子图。nrows和ncols表示将绘图区分成(nrows*ncols)个小区域,每个小区域
可以单独绘制图形;plot_number表示将图绘制在第plot_number个子区域。
eg:ax = plt.subplot(222)
表示画布分成(2*2=4)个小区域,并将图ax绘制在画布中的第二个子区域,也就是右上角位置。
设置线的属性
color
'b' | blue |
'g' | green |
'r' | red |
'c' | cyan |
'm' | magenta |
'y' | yellow |
'k' | black |
'w' | white |
linestyle
'-' | solid line style |
'--' | dashed line style |
'-.' | dash-dot line style |
':' | dotted line style
|
xlim函数:设置x的值域
ylim函数:设置y的值域
xticks函数:x轴上的值的标注
yticks函数:y轴上的值的标注
格式化转义 字符串首尾 r'$...$' (matplotlib中)
特殊字符的转义前面要加\
分数的转义’$\frac{分子}{分母} $‘
annotate函数
xy=(横坐标,纵坐标) 箭头尖端
xytext=(横坐标,纵坐标) 文字的左边
arroeprops=dict(arrowstyle="->",connectionstyle=" 弧度")
代码如下:
import numpy as np
import matplotlib.pyplot as plt
# X轴、Y轴数据
X = np.linspace(-1.5 * np.pi, 2 * np.pi, 256, endpoint=True)
C = np.cos(X)
# plt创建图纸
plt.figure(figsize=(10, 4), dpi=100)
# plt定位坐标
ax = plt.subplot(111)
# 调整坐标轴
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))
# plt画图
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")
# axis对象设置数据轴宽度、修改刻度、刻度标签
plt.xlim(X.min()*1.1, X.max()*1.1) # 设置x轴的值域
plt.xticks([-1.5 * np.pi, -np.pi, -np.pi/2, 0, np.pi/2, np.pi, 1.5*np.pi, 2*np.pi],
[r'$-3\pi/2$', r'$-\pi$', r'$-\pi/2$', r'$0$', r'$\pi/2$', r'$\pi$', r'$3\pi/2$', r'2$\pi$'])
plt.ylim(C.min()*1.1, C.max()*1.1)
plt.yticks([-1, +1])
# 绘制注释
t = 2*np.pi/3
plt.plot([t, t], [0, np.cos(t)], color='red', linewidth=1.5, linestyle='--')
plt.scatter([t, ], [np.cos(t), ], 50, color='blue')
plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
xy=(t, np.cos(t)), xycoords='data',
xytext=(-90, -50), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
# 调整图例
plt.legend(loc='upperleft',frameon=False)
plt.show()