day11 matplotlib学习
figure
-
语法说明
figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True) """ num : 图像编号或名称,数字为编号,字符串为名称 figsize : 指定figure的宽和高,单位为英寸 dpi : 指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 facecolor : 背景的颜色 edgecolor : 边框颜色 frameon : 是否显示边框 """
-
实例代码
#一个图 y1=2*x+2 y2=x**2 plt.figure(num=1,figsize=(8,4)) plt.plot(x,y1,color='black',linewidth=1,linestyle='--') plt.plot(x,y2,color='red',linewidth=3) plt.show() #两个图 y1=2*x+2 y2=x**2 plt.figure(num=1) plt.plot(x,y1) plt.figure(num=2) plt.plot(x,y2) plt.show()
坐标轴设置
-
坐标轴的文字描述和标尺
x1=np.linspace(-5,5,50) y1=2*x1+2 y2=x1**2 plt.figure(num=1,figsize=(8,4)) plt.plot(x1,y1,color='black',linewidth=1,linestyle='--') plt.plot(x1,y2,color='red',linewidth=3) #选择想要展示的x,y范围 plt.xlim((-2,3)) plt.ylim((0,4)) #描述坐标轴,这里我用中文显示不了,只有英文可以正常显示 plt.xlabel('day') plt.ylabel('money') #想更换坐标轴标尺 plt.figure(num=2,figsize=(8,4)) plt.plot(x1,y1,color='black',linewidth=1,linestyle='--') plt.plot(x1,y2,color='red',linewidth=3) plt.xlim((-2,3)) plt.ylim((0,4)) #把x轴换成(-2,3)显示10个节点 new_ticks=np.linspace(-2,3,10) plt.xticks(new_ticks) #把y轴上的节点[1,2,3,4]换成对应的字符['very good','good','normal','bad'] plt.yticks([1,2,3,4,],['very good','good','normal','bad']) #字符改成机器能读的而且是数学形式 #plt.yticks([1,2,3,4,],[r'$very\ good$',r'$good$',r'$normal$',r'$bad$']) plt.show()
-
移动坐标轴
x1=np.linspace(-5,5,50) y1=2*x1+2 y2=x1**2 plt.figure(num=1,figsize=(8,4)) plt.plot(x1,y1,color='black',linewidth=1,linestyle='--') plt.plot(x1,y2,color='red',linewidth=3) #gea是'get current axis'的简写,也就是把轴拿出来 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') #移动坐标轴 ax.spines['bottom'].set_position(('data',0))#把x轴绑定在y=0的位置 ax.spines['left'].set_position(('data',2))#把y轴绑定在x=2的位置 plt.show()
Legend 图例
-
参数介绍
plt.legend( )中有handles、labels和loc三个参数,其中:
handles需要传入你所画线条的实例对象
labels是图例的名称(能够覆盖在plt.plot( )中label参数值)
loc代表了图例在整个坐标轴平面中的位置(一般选取'best'这个参数值)
-
代码
x1=np.linspace(-5,5,50) y1=2*x1+2 y2=x1**2 plt.figure(num=1,figsize=(8,4)) line1, =plt.plot(x1,y1,color='black',linewidth=1,linestyle='--',label='money') line2, =plt.plot(x1,y2,color='red',linewidth=2,label='time') plt.legend(handles=[line1, line2], labels=['girl','boy'],loc='best') plt.show()
-
上述代码中,可以看到,若要plt.legend( )中的参数handels要想获取线条图像的实例,必须要用类似于 line1, = plt.plot( ) 这种写法
稍作解释,plt.plot( )返回的是一个二元组值,若要获取实例,必须用x, = plt.plot( )才能取出来实例对象。还有,handles和labels传入的值必须一一对应,要不然图例就乱了。