一,matplotilb库(数学绘图库)
mat数学 plot绘图 lib库
matplotlib.pyplot(缩写mp)->python 最常用接口
mp.plot(水平坐标,垂直坐标数组)
X:[1 2 3 4]
Y:[5 6 7 8]
.mp.plot(X,Y)
代码:plot(xxx,linestyle=线型,linewidth=线宽,color=颜色)
例:
1 import numpy as np 2 import matplotlib.pyplot as mp 3 from numpy import pi 4 5 x= np.linspace(-np.pi,np.pi,1000) #线性空间划分 1000个横坐标 6 #余弦曲线坐标 7 cos_y = np.cos(x)/2 #x是一个数组 numpy的cos可以接受数组,无需遍历矢量化 8 #正弦曲线坐标 9 sin_y = np.sin(x) 10 #x水平坐标,cos_y , sin_y 垂直坐标 11 # mp.plot((x,cos_y),color=‘limegreen‘) 12 mp.plot(x,cos_y,linestyle=‘--‘,linewidth=10,color=‘black‘) 13 mp.plot(x,sin_y) 14 mp.show()View Code
看手册功能:help(mp.plot)
设置图标范围
mp.xlim(左边界,右边界)
mp.xlim(地边界,顶边界)
功能:设置图标范围
如果设置最大值最小值,则全部填满。
显示弧度值:
mp.xticks(刻度位置数组,刻度文本数组)
mp.yticks(刻度位置数组,刻度文本数组)
刻度文本数组转义字符串写法:
[r‘$\pi$,r‘$\frac{分子}{分母}$‘,r‘$0$‘]
3/4pi = >r‘$\frac{3\pi}{4}$‘
引十字座标:
作用:拿到框线的轴
ax=mp.gca() #获取等前坐标轴
ax.spines[‘left‘].set_position((‘data‘,0)) #设置位置边框(有四边)
ax.spines[‘left‘].set_color(颜色) #设置位置边框颜色
显示图列和位置
mp.plot(...,label=r‘$y=sin(x)$‘)
mp.legend(loc=‘upper left‘)
标记一些特殊的点:
散点图(不连线)
mp.scatter(水平坐标数组,垂直坐标数组,marker=点型,s=大小,edgecolor=勾边色,faceolor=填充色,zorder=Z序)
Z序就是绘画的顺序,zorder数越大,点越晚压在线上
Matplotilb绘画顺序是线画点,再画线
图上做注释:
mp.annotate(备注文本,xy=目标位置,需要coords=目标坐标系,xytext=文本位置,Textcoords=文本坐标系,fontsize=字体大小,arrowprops=箭头属性)
例:
1 import numpy as np
2 import matplotlib.pyplot as mp
3
4 x =np.linspace(-np.pi,np.pi,1000) #线性空间划分
5
6 cos_y = np.cos(x)/2 #x是一个数组nupmy的cos可以接受数组,无需遍历矢量化
7 sin_y=np.sin(x)
8 xo=np.pi*3/4
9 yo_cos=np.cos(xo)/2
10 yo_sin = np.sin(xo)
11
12
13 # mp.xlim(x.min(),x.max()) #取最小的值做x的左边界,最大值右边界
14 # mp.ylim(sin_y.min(),sin_y.max())
15
16 #乘上1.1,上下左右都空开距离
17 mp.xlim(x.min()*1.1,x.max()*1.1)
18 mp.ylim(sin_y.min()*1.1,sin_y.max()*1.1)
19
20 mp.xticks([
21 -np.pi,-np.pi/2,0,np.pi/2,np.pi*3/4,np.pi],
22 [r‘$-\pi$‘,r‘$-\frac{\pi}{2}$‘,r‘$0$‘,r‘$\frac{\pi}{2}$‘,r‘$\frac{3\pi}{4}$‘,r‘$\pi$‘]
23 )
24 mp.yticks([-1,-0.5,0,5,1])
25
26 ax = mp.gca()
27 ax.spines[‘left‘].set_position((‘data‘,0))
28 ax.spines[‘bottom‘].set_position((‘data‘,0))
29 ax.spines[‘right‘].set_color(‘none‘) #设置为color=none就没有边框了
30 ax.spines[‘top‘].set_color(‘none‘) #设置为color=none就没有边框了
31
32
33 mp.scatter([xo,xo],[yo_cos,yo_sin],s=60,
34 edgecolors=‘limegreen‘,facecolor=‘white‘,zorder=10
35 )
36
37 mp.annotate(
38 r‘$\frac{1}{2}cos(\frac{3\pi}{4})=-\frac{\sqrt{2}}{4}$‘,
39 xy=(xo,yo_cos),xycoords=‘data‘,
40 xytext=(-90,-40),textcoords=‘offset points‘,
41 fontsize=14,
42 arrowprops=dict(arrowstyle=‘->‘,connectionstyle=‘arc3,rad=.2‘))
43
44 mp.annotate(
45 r‘$sin(\frac{3\pi}{4})=-\frac{\sqrt{2}}{2}$‘,
46 xy=(xo,yo_sin),xycoords=‘data‘,
47 xytext=(20,20),textcoords=‘offset points‘,
48 fontsize=14,
49 arrowprops=dict(arrowstyle=‘->‘, connectionstyle=‘arc3,rad=.2‘))
50
51
52
53
54 mp.plot([xo,xo],[yo_cos,yo_sin],linestyle=‘--‘,linewidth=1,color=‘limegreen‘)
55
56 mp.plot(x,cos_y,linestyle=‘-‘,linewidth=2,color=‘dodgerblue‘,label =r‘$y=cos(x)$‘)
57 mp.plot(x,sin_y,linestyle=‘-‘,linewidth=2,color=‘orangered‘,label =r‘$y=sin(x)$‘)
58 mp.legend(loc=‘upper left‘)
59 mp.show()
View Code
==============================================以上是常用matplotilb方法=====================================================
图形对象
具体写法:
mp.figure(图形对象名,figsize=窗口大小,dpi=分辨率,facecolor=窗口颜色)
mp.figure()方法:
第一次调用是创建,第二次创建为再次置为当前口
mp.title()写标题
mp.title(‘XXXX‘,fontsize=20)
mp.xlabel()坐标轴的标签
mp.xlabel(标签文字,字体大小)
mp.xlabel(‘x‘,fortsize=12)
mp.tick_params()设置刻度参数
mp.tick_params(labelsize=10)
mp.grid()设置格线
mp.grid(linestyle=‘:‘)
例:
1 import numpy as np
2 import matplotlib.pyplot as mp
3
4 x= np.linspace(-np.pi,np.pi,1000)
5 cos_y = np.cos(x)/2
6 sin_y=np.sin(x)
7
8 mp.figure(‘Figuer Objecti 1‘,figsize=(6,4),dpi=120,facecolor=‘lightgray‘)
9 mp.title(‘Figure Objcet 1‘,fontsize=16)
10
11 mp.xlabel(‘x‘,fontsize=12)
12 mp.xlabel(‘y‘,fontsize=12)
13 mp.tick_params(labelsize=10)
14 mp.grid(linestyle=‘:‘)
15
16 mp.figure(‘Figuer Objecti 2‘,figsize=(6,4),dpi=120,facecolor=‘lightgray‘)
17 mp.title(‘Figure Objcet 2‘,fontsize=16)
18
19 mp.xlabel(‘x‘,fontsize=12)
20 mp.xlabel(‘y‘,fontsize=12)
21 mp.tick_params(labelsize=10)
22 mp.grid(linestyle=‘:‘)
23
24
25 mp.figure(‘Figuer Objecti 1‘) #再调用一下figuer o1,就会到1的窗口下绘画
26 mp.plot(x,cos_y,label=r‘$y=\frac{1}{2}cos(x)$‘)
27 mp.legend()
28 mp.figure(‘Figuer Objecti 2‘) #再调用一下figuer o2,就会到2的窗口下绘画
29 mp.plot(x,sin_y,label=r‘$y=sin(x)$‘)
30 mp.legend()
31
32 mp.show() #只有show针对所有,其余的函数都只针对当前对象
View Code