100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > python绘图工具基础-matplotlib学习之基本使用

python绘图工具基础-matplotlib学习之基本使用

时间:2020-03-27 19:19:36

相关推荐

python绘图工具基础-matplotlib学习之基本使用

matplotlib学习之基本使用

1.figure学习2.设置坐标轴3.Legend 图例4.Annotation 标注5.tick能见度

1.figure学习

导包

importmatplotlib.pyplotaspltimportnumpyasnp

产生-3到3之间50个点

x=np.linspace(-3,3,50)

定义函数

y1=2*x+1y2=x**2

绘制直线

plt.figure()plt.plot(x,y1)

曲线与直线绘制一块

#num=3表示图片上方标题变为figure3,figsize=(长,宽)设置figure大小plt.figure(num=3,figsize=(8,5))plt.plot(x,y2)#红色虚线直线宽度默认1.0plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')plt.show()

2.设置坐标轴

设置x轴范围

plt.xlim((-1,2))

设置轴y范围

plt.ylim((-2,3))

设置坐标轴含义

#注:英文直接写,中文需要后面加上fontproperties属性plt.xlabel(u'价格',fontproperties='SimHei')plt.ylabel(u'利润',fontproperties='SimHei')

设置x轴刻度

#-1到2区间,5个点,4个区间,平均分:[-1.,-0.25,0.5,1.25,2.]new_ticks=np.linspace(-1,2,5)print(new_ticks)plt.xticks(new_ticks)

设置y轴刻度

'''设置对应坐标用汉字或英文表示,后面的属性fontproperties表示中文可见,不乱码,内部英文$$表示将英文括起来,r表示正则匹配,通过这个方式将其变为好看的字体如果要显示特殊字符,比如阿尔法,则用转意符\alpha,前面的\表示空格转意'''plt.yticks([-2,-1.8,-1,1.22,3.],['非常糟糕','糟糕',r'$good\\alpha$',r'$really\good$','超级好'],fontproperties='SimHei')

设置边框/坐标轴

gca='getcurrentaxis/获取当前轴线'ax=plt.gca()#spines就是脊梁,即四个边框#取消右边与上边轴ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')

matlibplot并没有设置默认的x轴与y轴方向,下面就开始设置默认轴

ax.xaxis.set_ticks_position('bottom')ax.yaxis.set_ticks_position('left')

设置坐标原点

#实现将(0,-1)设为坐标原点#设置y轴上-1为坐标原点的y点,把x轴放置再-1处ax.spines['bottom'].set_position(('data',-1))#也可以是('axes',0.1)后面是百分比,相当于定位到10%处#设置x轴上0为坐标原点的x点,将y轴移置0处ax.spines['left'].set_position(('data',0))

再写一遍以下代码,因为以上使用set_position后,中文会显示不出来

plt.yticks([-2,-1.8,-1,1.22,3.],['非常糟糕','糟糕',r'$good\\alpha$',r'$really\good$','超级好'],fontproperties='SimHei')

显示图片

plt.show()

3.Legend 图例

解释见1

importmatplotlib.pyplotaspltimportnumpyasnpx=np.linspace(-3,3,50)y1=2*x+1y2=x**2#绘制直线plt.figure()plt.plot(x,y1)#曲线与直线绘制一块#num=3表示图片上方标题变为figure3,figsize=(长,宽)设置figure大小plt.figure(num=3,figsize=(8,5))#设置x轴范围plt.xlim((-1,2))#设置轴y范围plt.ylim((-2,3))#设置坐标轴含义#注:英文直接写,中文需要后面加上fontproperties属性plt.xlabel(u'价格',fontproperties='SimHei')plt.ylabel(u'利润',fontproperties='SimHei')#-1到2区间,5个点,4个区间,平均分:[-1.,-0.25,0.5,1.25,2.]new_ticks=np.linspace(-1,2,5)print(new_ticks)plt.xticks(new_ticks)plt.yticks([-2,-1.8,-1,1.22,3.],['非常糟糕','糟糕',r'$good\\alpha$',r'$really\good$','超级好'],fontproperties='SimHei')

设置legend图例

l1,=plt.plot(x,y2)#可添加label属性,只不过如果这里添加了,下面legend再添加,下面的就会覆盖此处的!#红色虚线直线宽度默认1.0l2,=plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')'''prop={'family':'SimHei','size':15}显示中文legend(hadles=[,,],labels=[,,],loc='best/upperright/upperleft/.../lowerright')handles就是你给他添加legend的线,如果要用handles,则前面的plt.plot,必须用l1,形式(不要忘记逗号)此处labels会覆盖上述的plt.plot()的labelloc默认是best,给你放在一个合适的位置上,如果你拉伸弹框,位置会跟着变,自动放置合适位置'''plt.legend(handles=[l1,l2],prop={'family':'SimHei','size':15},loc='lowerright',labels=['直线','曲线'])

绘制

plt.show()

4.Annotation 标注

见上述详解

importmatplotlib.pyplotaspltimportnumpyasnpx=np.linspace(-3,3,20)y=2*x+1#绘制直线plt.figure(num=1,figsize=(8,5),)plt.plot(x,y)#gca='getcurrentaxis/获取当前轴线'ax=plt.gca()#spines就是脊梁,即四个边框#取消右边与上边轴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))#也可以是('axes',0.1)后面是百分比,相当于定位到10%处ax.yaxis.set_ticks_position('left')ax.spines['left'].set_position(('data',0))

绘制特定散点

x0=1y0=2*x0+1#plot散点图,上述plt.plot(x,y)变为plt.scatter(x,y)绘制出来就是散点图#s代表大小,b代表blueplt.scatter(x0,y0,s=50,color='b')#把两个点放进去plot一下,画出垂直于x轴的一条线,[x0,x0]表示两个点的x,[0,y0]表示两个点的y

绘制(x0,y0)垂直于x轴的线

#k--表示黑色虚线,k代表黑色,--表示虚线,lw表示线宽plt.plot([x0,x0],[0,y0],'k--',lw=2.5)

添加注释 annotate

'''其中参数xycoords='data'是说基于数据的值来选位置,xytext=(+30,-30)和textcoords='offsetpoints'对于标注位置的描述和xy偏差值,arrowprops是对图中箭头类型的一些设置.'''plt.annotate(r'$2x+1=%s$'%y0,xy=(x0,y0),xycoords='data',xytext=(+30,-30),textcoords='offsetpoints',fontsize=16,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))

添加注释 text

#其中-3.7,3,是选取text的位置,空格需要用到转字符\,fontdict设置文本字体.plt.text(-3.7,3,r'$This\is\the\some\text.\mu\\sigma_i\\alpha_t$',fontdict={'size':'16','color':'red'})plt.show()

5.tick能见度

参考上面

importmatplotlib.pyplotaspltimportnumpyasnpx=np.linspace(-3,3,50)y=0.1*xplt.figure()#设置zorder给plot在z轴方向排序plt.plot(x,y,linewidth=10,zorder=1)plt.ylim(-2,2)ax=plt.gca()ax.spines['right'].set_color('none')ax.spines['top'].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))

调整坐标

#对被遮挡的图像调节相关透明度,本例中设置x轴和y轴的刻度数字进行透明度设置forlabelinax.get_xticklabels()+ax.get_yticklabels():label.set_fontsize(12)'''其中label.set_fontsize(12)重新调节字体大小,bbox设置目的内容的透明度相关参,facecolor调节box前景色,edgecolor设置边框,本处设置边框为无,alpha设置透明度.'''#其中label.set_fontsize(12)重新调节字体大小,bbox设置目的内容的透明度相关参,facecolor调节box前景色,edgecolor设置边框,本处设置边框为无,alpha设置透明度.label.set_bbox(dict(facecolor='white',edgecolor='none',alpha=0.7))

绘制

plt.show()

作者光城的公众号:

请关注和分享↓↓↓

机器学习初学者

QQ群:774999266

往期精彩回顾

机器学习简易入门-附推荐学习资料

机器学习初学者公众号下载资源汇总(一)

黄海广博士的github镜像下载(机器学习及深度学习资源)

吴恩达老师的机器学习和深度学习课程笔记打印版

机器学习小抄-(像背托福单词一样理解机器学习)

首发:深度学习入门宝典-《python深度学习》原文代码中文注释版及电子书

科研工作者的神器-zotero论文管理工具

机器学习的数学基础

机器学习必备宝典-《统计学习方法》的python代码实现、电子书及课件

吐血推荐收藏的学位论文排版教程(完整版)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。