figure可以帮助我们绘制出多个图像。
几个figure 就会绘制出几个图像。
- import matplotlib.pyplot as plt
- import numpy as np
- x=np.linspace(-3,3,50)
- y=2*x+1
- y2=x**2
- #可以绘制多张图片 在不同的figure模块中
- plt.figure() #图像1
- plt.plot(x,y)
- plt.figure() #图像2 图像2下有两条线
- plt.plot(x,y)
- plt.plot(x,y2,color='r',linewidth=2,linestyle='--') #设置线的颜色、宽度与样式
- plt.show()
结果:
plt.xlim() plt.ylim()
plt.xlabel() plt.ylabel()
plt.xticks() plt.yticks()
- import matplotlib.pyplot as plt
- import numpy as np
- x=np.linspace(-3,3,50)
- y=2*x+1
- y2=x**2
- plt.plot(x,y)
- plt.plot(x,y2,color='r',linewidth=2,linestyle='--')
- plt.xlim((-1,2)) #x坐标轴限制
- plt.ylim((-2,3))
- plt.xlabel('x') #x坐标轴标签
- plt.ylabel('y')
- new_ticks=np.linspace(-1,2,5) #x坐标轴新的显示尺度 3/(5-1)
- y_ticks={-2:"v b",-1:'b',0:'n',1:'g',3:"v g"}
-
- plt.xticks(new_ticks) #设置x坐标轴的标尺
- plt.yticks([-2,-1,0,1,3],[r'$really\ b$',r'$b\ \alpha$',r'$n$',r'$g$',r'$really\ g$']) #设置y坐标轴的标尺和标签
- plt.show()
- import matplotlib.pyplot as plt
- import numpy as np
- x=np.linspace(-3,3,50)
- y=2*x+1
- y2=x**2
- plt.plot(x,y)
- plt.plot(x,y2,color='r',linewidth=2,linestyle='--')
- plt.xlim((-1,2)) #x坐标轴限制
- plt.ylim((-2,3))
- plt.xlabel('x') #x坐标轴标签
- plt.ylabel('y')
- new_ticks=np.linspace(-1,2,5) #x坐标轴新的显示尺度 3/(5-1)
- y_ticks={-2:"v b",-1:'b',0:'n',1:'g',3:"v g"}
-
- plt.xticks(new_ticks) #设置x坐标轴的标尺
- plt.yticks([-2,-1,0,1,3],[r'$really\ b$',r'$b\ \alpha$',r'$n$',r'$g$',r'$really\ g$']) #设置y坐标轴的标尺和标签
- ax=plt.gca() #get current axis
- ax.spines['right'].set_color('none') #将右边的上边设置为没有颜色
- ax.spines['top'].set_color('none')
- ax.xaxis.set_ticks_position('bottom')#将下边的边框设为x轴 只有bottom top both default 四个
- ax.yaxis.set_ticks_position('left') #将左边的边框设为y轴 默认也是如此 只有left right both default四个
- ax.spines['bottom'].set_position(('data',0)) #把x轴设置在 y=0这里
- ax.spines['left'].set_position(('data',0))#把y轴设置在 x=0这里
- plt.show()
在plot中添加了label 给线段添加标签之后,要想显示,就需要加上plt.legend()
legend 中有三个参数 handles labels loc
handels 要使用时 我们必须用一个变量接收plt.plot()且变量后一定要加逗号
handles可以确定我们显示几个线段说明,并且我们可以修改原来在plot中的label。
labels 是用于修改我们的线段说明,我们也可以不在plt.plot中设置label,直接在legend中设置。
loc是图例的位置,有不同的参数可以用,如upper right,best.....等
- import matplotlib.pyplot as plt
- import numpy as np
- x=np.linspace(-3,3,50)
- y=2*x+1
- y2=x**2
-
- plt.xlim((-1,2)) #x坐标轴限制
- plt.ylim((-2,3))
- plt.xlabel('x') #x坐标轴标签
- plt.ylabel('y')
- new_ticks=np.linspace(-1,2,5) #x坐标轴新的显示尺度 3/(5-1)
- y_ticks={-2:"v b",-1:'b',0:'n',1:'g',3:"v g"}
-
- plt.xticks(new_ticks) #设置x坐标轴的标尺
- plt.yticks([-2,-1,0,1,3],[r'$really\ b$',r'$b\ \alpha$',r'$n$',r'$g$',r'$really\ g$']) #设置y坐标轴的标尺和标签
-
- l1,=plt.plot(x,y,label='up')
- l2,=plt.plot(x,y2,color='r',linewidth=2,linestyle='--',label='down')
- plt.legend(handles=[l1,],labels=['aaa'],loc='best')
- plt.show()
这里只显示了一条线段的图例说明,并且修改了label
- import matplotlib.pyplot as plt
- import numpy as np
- x=np.linspace(-3,3,50)
- y=2*x+1
- y2=x**2
- plt.plot(x,y)
- plt.xlim((-1,2)) #x坐标轴限制
- plt.ylim((-2,4))
- plt.xlabel('x') #x坐标轴标签
- plt.ylabel('y')
- ax=plt.gca()
- ax.spines['right'].set_color('none') #将右边的上边设置为没有颜色
- ax.spines['top'].set_color('none')
- ax.xaxis.set_ticks_position('bottom')#将下边的边框设为x轴 只有bottom top both default 四个
- ax.yaxis.set_ticks_position('left') #将左边的边框设为y轴 默认也是如此 只有left right both default四个
- ax.spines['bottom'].set_position(('data',0)) #把x轴设置在 y=0这里
- ax.spines['left'].set_position(('data',0))#把y轴设置在 x=0这里
-
- x0=1
- y0=2*x0+1
- plt.scatter(x0,y0,s=50,color='r') #一个点
- plt.plot([x0,x0],[0,y0],'k--',lw=3) #两点确定一条线段 k为black --为 linestyle,lw 为linewidth
- plt.annotate(r'$2x+1=%s$' % y0,xy=(x0,y0),xycoords='data',xytext=(+30,-30),textcoords='offset points',fontsize=16,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
- plt.text(-1,3,r'$this\ is\ text\ \mu_i$',fontdict={'size':16,'color':'r'})
- plt.show()
比如这种情况下,横线就影响了我们对于标尺的观看,所以我们可以调整ticks的能见度,比如加一个背景等。
- import matplotlib.pyplot as plt
- import numpy as np
- x=np.linspace(-3,3,50)
- y=2*x+1
- y2=x**2
- plt.plot(x,y,lw=10,zorder=1) #设置图层顺序
-
- plt.xlim((-1,2)) #x坐标轴限制
- plt.ylim((-2,4))
- plt.xlabel('x') #x坐标轴标签
- plt.ylabel('y')
- ax=plt.gca()
- ax.spines['right'].set_color('none') #将右边的上边设置为没有颜色
- ax.spines['top'].set_color('none')
- ax=plt.gca()
- ax.spines['right'].set_color('none') #将右边的上边设置为没有颜色
- ax.spines['top'].set_color('none')
- ax.xaxis.set_ticks_position('bottom')#将下边的边框设为x轴 只有bottom top both default 四个
- ax.yaxis.set_ticks_position('left') #将左边的边框设为y轴 默认也是如此 只有left right both default四个
- ax.spines['bottom'].set_position(('data',0)) #把x轴设置在 y=0这里
- ax.spines['left'].set_position(('data',0))#把y轴设置在 x=0这里
- for label in ax.get_xticklabels()+ax.get_yticklabels():#对x和y的ticks进行调整
- label.set_fontsize(12) #设置字体
- label.set_zorder(2) #设置图层顺序
- label.set_bbox(dict(facecolor='r',edgecolor='None',alpha=0.3)) #设置背景框 颜色 是否有边框,以及透明度
- plt.show()
其中最主要的也就是x,y,s,c,marker,alpha
marker属性:
- import matplotlib.pyplot as plt
- import numpy as np
- x=np.random.normal(0,1,1024) #随机生成xy
- y=np.random.normal(0,1,1024)
- colors = np.random.rand(1024) #随机生成代表颜色的数字
- plt.scatter(x,y,s=75,c=colors,alpha=0.4)
- plt.xticks([]) #x的坐标不在显示
- plt.yticks([])
- plt.xlim((-1.5,1.5))
- plt.ylim((-1.5,1.5))
- plt.show()
结果: