数据可视化
一,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,linestyle=‘--‘,linewidth=10,color=‘black‘) 13 mp.plot(x,sin_y) 14 mp.show() ? 看手册功能:help(mp.plot) 设置图标范围 mp.xlim(左边界,右边界) mp.xlim(地边界,顶边界) 功能:设置图标范围 如果设置最大值最小值,则全部填满。 显示弧度值: mp.xticks(刻度位置数组,刻度文本数组) mp.yticks(刻度位置数组,刻度文本数组) 刻度文本数组转义字符串写法: [r‘$pi$,r‘$frac{分子}{分母}$‘,r‘$0$‘] 3/4pi = >r‘$frac{3pi}{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,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,np.pi/2,np.pi*3/4,np.pi],22 [r‘$-pi$‘,r‘$-frac{pi}{2}$‘,r‘$0$‘,r‘$frac{pi}{2}$‘,r‘$frac{3pi}{4}$‘,r‘$pi$‘] 23 ) 24 mp.yticks([-1,-0.5,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{3pi}{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{3pi}{4})=-frac{sqrt{2}}{2}$‘,46 xy=(xo,yo_sin),47 xytext=(20,20),48 fontsize=14,49 arrowprops=dict(arrowstyle=‘->‘,rad=.2‘)) 50 51 52 53 54 mp.plot([xo,linewidth=1,color=‘limegreen‘) 55 56 mp.plot(x,linestyle=‘-‘,linewidth=2,color=‘dodgerblue‘,label =r‘$y=cos(x)$‘) 57 mp.plot(x,sin_y,color=‘orangered‘,label =r‘$y=sin(x)$‘) 58 mp.legend(loc=‘upper left‘) 59 mp.show() ? ==============================================以上是常用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,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‘,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,label=r‘$y=frac{1}{2}cos(x)$‘) 27 mp.legend() 28 mp.figure(‘Figuer Objecti 2‘) #再调用一下figuer o2,就会到2的窗口下绘画 29 mp.plot(x,label=r‘$y=sin(x)$‘) 30 mp.legend() 31 32 mp.show() #只有show针对所有,其余的函数都只针对当前对象 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |