python matplotlib库笔记
来源:互联网 发布:京东淘宝那个货真价实 编辑:程序博客网 时间:2024/06/14 09:41
matplotlib官方网站:http://matplotlib.org/gallery.html
plot函数
import numpy as npimport matplotlib.pyplot as pltt=np.arange(0,4,0.1)plt.plot(t,t,color='red',linestyle='-',marker='*',linewidth=3,label='Line1')plt.plot(t,t**2,color='green',linestyle='--',marker='o',linewidth=1,label='Line2')plt.legend(loc='upper left')plt.show()
处理中文字体:
方法1:
方法1:
x=np.arange(0,np.pi,0.01)plt.plot(x,np.sin(x))#只修改局部的字体plt.xlabel('x轴',fontproperties='SimHei',fontsize=20)plt.ylabel('y轴',fontproperties='SimHei',fontsize=20)plt.show()
方法2:
#修改全局字体matplotlib.rcParams['font.family']='SimHei'matplotlib.rcParams['font.size']=20x=np.arange(0,np.pi,0.01)plt.plot(x,np.sin(x))plt.xlabel('x轴')plt.ylabel('y轴')plt.show()
annotate实例(使用箭头添加注释):
x=np.arange(0,5,0.01)plt.subplot(121)plt.plot(x,x)#xy为要注释的点,xytext注释文字的坐标,arrorwrops为箭头的属性plt.annotate('x=1',xy=(3,3),xytext=(4,2.7), arrowprops=dict())plt.subplot(122)plt.plot(x,x)#shrink可以使得箭头不指向点,以0.1的比例缩短箭头plt.annotate('x=1',xy=(3,3),xytext=(4,2.7), arrowprops=dict(facecolor='black',shrink=0.1,width=2))plt.show()
绘制扇形图:
import numpy as npimport matplotlib.pyplot as pltimport matplotliblabels=['a','b','c','d']#百分比sizes=[15,30,45,10]#0.1是扇形块偏离的比例explode=(0,0.1,0,0)#shadow是指是否产生阴影,startangle是指开始绘制扇形图的起始角度plt.pie(sizes,explode=explode,labels=labels,autopct='%.1f', shadow=False,startangle=90)#x轴和y轴相等,产生扇形图的平面效果plt.axis('equal')plt.show()
使用面向对象的方式调用绘图函数:
#subplots函数返回figure对象和2*2的axes对象(array形式)fig,ax=plt.subplots(2,2)ax[0,0].plot([0,1],[0,1])ax[0,1].plot(np.arange(12),np.arange(12),marker='o')ax[1,0].hist(np.random.randn(100),bins=50,color='k',alpha=0.5)ax[1,1].pie([20,30,50],labels=['a','b','c'],autopct='%.1f',shadow=False)plt.show()
绘图小技巧
import matplotlib.pyplot as pltimport numpy as npx=np.linspace(-1,2,10)y1=xl1,=plt.plot(x,y1,color='r',linewidth=1,linestyle='-')#移动坐标轴#获得图的上下左右框线ax=plt.gca()#上部和右部框线消失ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')#底部框线为x轴,左框线为y轴ax.xaxis.set_ticks_position('bottom')ax.yaxis.set_ticks_position('left')#y轴移动(向左或向右)与x轴(向上或向下)相交于(0,0)点ax.spines['bottom'].set_position(('data',0))ax.spines['left'].set_position(('data',0))#描点(1,1)x0=1y0=x0#画点(x0,y0),点大小为20plt.scatter(x0,y0,s=20,color='b')plt.plot([x0,x0],[y0,0],'k--',linewidth=2.5)#xycoords='data'在xy指定的点上,xytext=(+30,-30),textcoords='offset points'相对于点的xy偏移值plt.annotate('(%d,%d)'%(x0,y0),xy=(x0,y0),xycoords='data',xytext=(+30,-30),textcoords='offset points', fontsize=16,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))#在(-1,1)添加注释plt.text(-1,1,r'$y=x$',fontdict={'size':14,'color':'y'})#设置图注y2=2*x+1l2,=plt.plot(x,y2,color='g')#best是指找一个不覆盖数据的合适位置放置图注plt.legend(handles=[l1,l2],labels=['l1','l2'],loc='best')plt.show()
散点图的绘制
import matplotlib.pyplot as pltimport numpy as npn=1024#随机生成平均值为0,方差为1的n个数x=np.random.normal(0,1,n)y=np.random.normal(0,1,n)#颜色生成函数t=np.arctan2(x,y)#绘制散点图,透明度为50%plt.scatter(x,y,s=75,c=t,alpha=0.5)plt.xlim(-1.5,1.5)plt.ylim(-1.5,1.5)#将x,y轴标签去掉plt.xticks(())plt.yticks(())plt.show()
直方图与条形图的区别:
- 条形图是用条形的长度表示各类别频数的多少,其宽度(表示类别)则是固定的;
直方图是用面积表示各组频数的多少,矩形的高度表示每一组的频数或频率,宽度则表示各组的组距,因此其高度与宽度均有意义。 - 由于分组数据具有连续性,直方图的各矩形通常是连续排列,而条形图则是分开排列。
- 条形图主要用于展示分类数据,而直方图则主要用于展示数据型数据。
绘制直方图:
#bins是划分的区域个数(根据最小值和最大值的区间等分),normed是纵坐标的含义,0表示个数,1表示概率plt.hist(np.random.normal(100,20,100),bins=10,normed=1, histtype='stepfilled',facecolor='b',alpha=0.75)plt.show()
绘制条形图
import matplotlib.pyplot as pltimport numpy as npn=12x=np.arange(n)#生成0.5~1的n个数y1=np.random.uniform(0.5,1,n)y2=np.random.uniform(0.5,1,n)#设置柱状图的颜色plt.bar(x,y1,facecolor='#9999ff',edgecolor='white')plt.bar(x,-y2,facecolor='#ff9999',edgecolor='white')#zip函数可以用于x,y1数组同时赋值for xx,yy in zip(x,y1): #居中于条柱,top指位于条柱边缘线的下方,bottom位于条柱边缘线的上方 plt.text(xx,yy,'%.2f'%yy,ha='center',va='bottom')for xx,yy in zip(x,y2): plt.text(xx,-yy,'-%.2f'%yy,ha='center',va='top')plt.xlim(-1,12)plt.xticks(())plt.ylim(-1.5,1.5)plt.yticks(())plt.show()
绘制等高线图
import matplotlib.pyplot as pltimport numpy as npdef f(x,y): return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)n=256x=np.linspace(-3,3,n)y=np.linspace(-3,3,n)X,Y=np.meshgrid(x,y)#填充等高线,分成10部分(0是2部分,1是3部分...),cmap指color map,每一个指=值对应颜色地图的某个值plt.contourf(X,Y,f(X,Y),8,alpha=0.75,cmap=plt.cm.hot)#绘制等高线,分成10部分c=plt.contour(X,Y,f(X,Y),8,colors='k',linewidth=0.5)#在等高线上标数据,嵌在等高线上plt.clabel(c,inline=True,fontsize=10)plt.show()
绘制3D图形
import matplotlib.pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3Dfig=plt.figure()#创建一个3D的图像区域ax=Axes3D(fig)x=np.arange(-4,4,0.25)y=np.arange(-4,4,0.25)X,Y=np.meshgrid(x,y)Z=np.sin(np.sqrt(X**2+Y**2))#绘制三维图像,横轴生成数据点的间隔为1,纵轴为1,颜色地图为彩虹ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))#填充等高线,zdir='z'平面垂直xoy平面,zdir='x'平面垂直yoz平面,offset位于轴-2处ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap=plt.get_cmap('rainbow'))ax.set_zlim(-2,2)plt.show()
子图的显示与排版的方法
方法一:
import matplotlib.pyplot as pltfig, axes = plt.subplots(2, 2)# 调整图像之间的间距,height和widthfig.subplots_adjust(hspace=1, wspace=2)axes[0, 0].plot([0, 1], [0, 1])axes[0, 1].plot([0, 1], [0, 2])axes[1, 0].plot([0, 1], [0, 3])axes[1, 1].plot([0, 2], [0, 6])plt.show()
方法2:
import matplotlib.pyplot as pltimport matplotlib.gridspec as gridspec#生成3×3的网格结构gs=gridspec.GridSpec(3,3)ax1=plt.subplot(gs[0,:])ax2=plt.subplot(gs[1,:2])ax3=plt.subplot(gs[1:,2])ax4=plt.subplot(gs[2,0])ax5=plt.subplot(gs[2,1])#自动调整图像外部边缘plt.tight_layout()plt.show()
方法三:
import matplotlib.pyplot as plt#3×3的网格结构从(0,0)位起始位置,span为跨度,向右占3个单位,向下占1个单位ax1=plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1)ax1.plot([0,1],[0,1])ax1.set_title('ax1')ax2=plt.subplot2grid((3,3),(1,0),colspan=1,rowspan=2)ax3=plt.subplot2grid((3,3),(1,1),colspan=1,rowspan=2)ax4=plt.subplot2grid((3,3),(1,2),colspan=1,rowspan=2)#自动调整图像外部边缘plt.tight_layout()plt.show()
产生图中图效果
import matplotlib.pyplot as pltimport numpy as npplt.plot([0,1],[0,1])#left=0.6,bottom=0.2,width=0.25,height=0.25产生绘图区域plt.axes([0.6,0.2,0.25,0.25])plt.plot([0,1],[0,1])plt.xlabel('x')plt.ylabel('y')plt.title('1')plt.show()
设置双坐标轴
import matplotlib.pyplot as pltimport numpy as npx=np.arange(0,10,0.1)y1=x**2y2=2*x+1ax1=plt.subplot(111)#设置次y坐标轴ax2=ax1.twinx()ax1.plot(x,y1,'r-')ax2.plot(x,y2,'b--')ax1.set_xlabel('x')ax1.set_ylabel("y1",color='r')ax2.set_ylabel('y2',color='b')plt.show()
阅读全文
0 0
- python matplotlib库笔记
- Python库--matplotlib库学习笔记总结
- python-matplotlib学习笔记37
- python Matplotlib 学习笔记(1)
- python Matplotlib 学习笔记(2)
- 安装python Matplotlib 库
- Python--Matplotlib绘图库
- python库之matplotlib
- Python 中的matplotlib库
- python matplotlib库
- Python的matplotlib库学习笔记第一篇
- Python学习笔记(一)--- Matplotlib
- Python数据可视化之Matplotlib学习笔记
- Python数据可视化—matplotlib笔记
- Python数据可视化—matplotlib笔记
- 机器学习笔记--Python之Matplotlib
- Python笔记-NumPy,SciPy,IPython,Matplotlib
- 【Python】Matplotlib绘图库初探
- AngularJS登录注册
- 卷积神经网络物体检测之感受野大小计算
- Python与机器学习之文章研读(二)
- 欢迎使用CSDN-markdown编辑器
- spring 时间格式化注解@DateTimeFormat @JsonFormat
- python matplotlib库笔记
- python json文件
- 【数据结构之宏观总结 】
- Okhttp封装
- 一站搞定UEFI下Win7,ubuntu安装
- MUI(一)简介
- C++小顶堆求Topk
- 异步加载和HttpURLConnection和Imageloader
- C/C++零散知识点总结(四)
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
连性
等性
女性性冷淡吃什么
性 网站
如果.性
为了性
过敏性鼻炎药
滴虫性阴炎用什么药
女人吃什么药马上有性反应
霉菌性阴炎药
过敏性咳嗽吃什么药
萎缩性胃炎吃什么药
过敏性咳嗽药
女人喝什么药来性
风湿性关节炎吃什么药
非萎缩性胃炎吃什么药
性的剧药
风湿性关节炎药
莓菌性阴炎用什么药好
女人喝什么药起性
肠胃性感冒吃什么药
女人吃什么药能改变性冷
正性肌力药
药性
女人性冷淡吃什么
女人性冷淡吃什么药
女性冷淡吃什么药
性虏
性虏待
户口性质
不等式性质
商不变性质
户籍性质
菱形性质
氧气性质
菱形的性质
三角形性质
性质
单位性质
行列式性质
氮气性质