matplotlib python 画图介绍(一)

1、figure

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()

结果:

matplotlib python 画图介绍(一)_第1张图片

2、坐标轴的设置

2.1 修改坐标轴的标尺 和标签

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()

2.2 修改坐标轴的位置 

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()

matplotlib python 画图介绍(一)_第2张图片

3、legend  线段说明

在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 

 matplotlib python 画图介绍(一)_第3张图片

4、Annotation 注解

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()

matplotlib python 画图介绍(一)_第4张图片

5、ticks能见度

比如这种情况下,横线就影响了我们对于标尺的观看,所以我们可以调整ticks的能见度,比如加一个背景等。

matplotlib python 画图介绍(一)_第5张图片

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()

6、scatter散点图

matplotlib python 画图介绍(一)_第6张图片

其中最主要的也就是x,y,s,c,marker,alpha

marker属性:

matplotlib python 画图介绍(一)_第7张图片

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()

结果:

matplotlib python 画图介绍(一)_第8张图片

你可能感兴趣的:(matplotlib,matplotlib)