python--matplotlib总结

一、画一个简单的图

代码:

import matplotlib.pyplot as plt
x=[1,2,3]
y1=[1,2,3]
y2=[4,5,6]
plt.plot(x,y1)
plt.plot(x,y2,color='red',linewidth=1.0,linestyle='--')
plt.show()

结果:
python--matplotlib总结_第1张图片

二、figure用法

代码:

import matplotlib.pyplot as plt
x=[1,2,3]
y1=[1,2,3]
y2=[4,5,6]
plt.figure()
plt.plot(x,y1)
plt.figure(num=3,figsize=(8,5))#num是图片的序号
plt.plot(x,y2)
plt.show()

结果:
python--matplotlib总结_第2张图片

三、设置横纵坐标轴

代码:

import matplotlib.pyplot as plt
x=[1,2,3]
y1=[1,2,3]
y2=[4,5,6]
plt.plot(x,y1)
plt.plot(x,y2,color='red',linewidth=1.0,linestyle='--')
plt.xlim((0,5))
plt.ylim((0,6))
plt.xlabel('xx')
plt.ylabel('yy')
n=[0,1,2,3]
plt.xticks(n)#相当于贴便签
plt.yticks([1,2,3,4,5,6],
           ['a',r'$b$',r'$ok\ \alpha$','d','e','f'])#‘r’正则改变字体‘\’转译‘$’读取的部分
#设置坐标轴位置
ax=plt.gca()#获取当前图片
ax.spines['right'].set_color('none')#将右侧边框颜色设为无
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',1))
ax.spines['left'].set_position(('data',1))

#防止坐标轴数据被挡
for label in ax.get_xticklabels()+ax.get_yticklabels():
    label.set_fontsize(12)
    label.set_bbox(dict(facecolor='red',edgecolor='g',alpha=0.7))
plt.show()

结果:
python--matplotlib总结_第3张图片
python--matplotlib总结_第4张图片
python--matplotlib总结_第5张图片

四、legend用法

代码:

import matplotlib.pyplot as plt
x=[1,2,3]
y1=[1,2,3]
y2=[4,5,6]
#图例
#第一种简单的图例
'''
plt.plot(x,y1,label='lf')
plt.plot(x,y2,color='red',linewidth=1.0,linestyle='--',label='sz')
plt.xlim((0,5))
plt.ylim((0,6))
plt.xlabel('xx')
plt.ylabel('yy')
n=[0,1,2,3]
plt.xticks(n)#相当于贴便签
plt.yticks([1,2,3,4,5,6],
           ['a',r'$b$',r'$ok\ \alpha$','d','e','f'])#‘r’正则改变字体‘\’转译‘$’读取的部分
plt.legend()
plt.show()
'''
#第二种高级的图例
a,=plt.plot(x,y1,label='lf')
b,=plt.plot(x,y2,color='red',linewidth=1.0,linestyle='--',label='sz')
plt.xlim((0,5))
plt.ylim((0,6))
plt.xlabel('xx')
plt.ylabel('yy')
n=[0,1,2,3]
plt.xticks(n)#相当于贴便签
plt.yticks([1,2,3,4,5,6],
           ['a',r'$b$',r'$ok\ \alpha$','d','e','f'])#‘r’正则改变字体‘\’转译‘$’读取的部分
plt.legend(handles=[a,b,],labels=['aa','bb'],loc='best')
plt.show()

结果:
python--matplotlib总结_第6张图片
python--matplotlib总结_第7张图片

五、标注

代码:

import matplotlib.pyplot as plt
x=[1,2,3]
y1=[1,2,3]
y2=[4,5,6]
#标注
plt.plot(x,y1,label='lf')
plt.plot(x,y2,color='red',linewidth=1.0,linestyle='--',label='sz')
plt.xlim((0,5))
plt.ylim((0,6))
plt.xlabel('xx')
plt.ylabel('yy')
n=[0,1,2,3]
plt.xticks(n)#相当于贴便签
plt.yticks([1,2,3,4,5,6],
           ['a',r'$b$',r'$ok\ \alpha$','d','e','f'])#‘r’正则改变字体‘\’转译‘$’读取的部分

ax=plt.gca()#获取当前图片
ax.spines['right'].set_color('none')#将右侧边框颜色设为无
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',1))
ax.spines['left'].set_position(('data',1))
x0=2
y0=5
plt.scatter(x0,y0,s=50,color='b')
plt.plot([x0,x0],[y0,1],'k--',lw=2.5)#lw是粗细
#标注
plt.annotate(r'$(2,%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,5,r'$lfsz\ painting$',fontdict={'size':16,'color':'b'})
plt.show()

结果:
python--matplotlib总结_第8张图片

六、scatter用法

代码:

import matplotlib.pyplot as plt
import numpy as np
x=np.random.normal(0,1,100)
y=np.random.normal(0,1,100)
C=np.arctan2(y,x)#颜色设置
plt.scatter(x,y,s=10,c=C,alpha=0.5)
plt.xticks(())
plt.yticks(())
plt.show()

结果:
python--matplotlib总结_第9张图片

七、柱状图

代码:

import matplotlib.pyplot as plt
import numpy as np
n=16
x=np.arange(n)
y1=(1-x/float(n))*np.random.uniform(0.5,1.0,n)
y2=(1-x/float(n))*np.random.uniform(0.5,1.0,n)
plt.bar(x,y1,facecolor='r',edgecolor='white',label='a')
plt.bar(x,-y2,facecolor='b',edgecolor='white',label='b')
plt.legend()
plt.xticks(())
plt.yticks(())
for a,b in zip(x,y1):
    plt.text(a+0.4,b+.05,'%.2f'%b,ha='center',va='bottom')
for a,b in zip(x,y2):
    plt.text(a+0.4,-b-.05,'%.2f'%b,ha='center',va='top')
plt.show()

结果:
python--matplotlib总结_第10张图片

八、等高线

代码:

import matplotlib.pyplot as plt
import numpy as np
n=256
##number of hight
def gong(x,y):
    return (1-x/5+x**5+y**3)*np.exp(-x**2-y**2)
x=np.linspace(-3,3,n)    
y=np.linspace(-3,3,n)
X,Y=np.meshgrid(x,y)
#picture
plt.contourf(X,Y,gong(X,Y),8,alpha=0.75,cmap=plt.cm.hot)
#picture line
l=plt.contour(X,Y,gong(X,Y),colors='k',linewidth=.5)
plt.clabel(l,inline=True,fontsize=10)
plt.xticks(())
plt.yticks(())
plt.show()

结果:
python--matplotlib总结_第11张图片

九、image图片

参考网站:http://matplotlib.org/examples/images_contours_and_fields/interpolation_methods.html
代码:

import matplotlib.pyplot as plt
import numpy as np
a=np.array([0.3,0.36,0.42,0.36,0.43,0.52,0.42,0.535,0.6515]).reshape(3,3)
plt.imshow(a,interpolation='nearest',cmap='bone',origin='upper')
plt.colorbar(shrink=.9)
plt.xticks(())
plt.yticks(())
plt.show()

结果:
python--matplotlib总结_第12张图片

十、3D+等高线

代码:

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure()
ax=Axes3D(fig)
X=np.arange(-4,4,0.25)
Y=np.arange(-4,4,0.25)
X,Y=np.meshgrid(X,Y)
R=np.sqrt(X**2+Y**2)
Z=np.sin(R)
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))
ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap='rainbow')
ax.set_zlim(-2,2)
plt.show()

结果:
python--matplotlib总结_第13张图片

十一、多个图像在一个图中显示

代码:

import matplotlib.pyplot as plt
plt.figure()
plt.subplot(2,2,1)
plt.plot([1,2],[1,2])
plt.subplot(2,2,2)
plt.plot([1,1],[1,2])
plt.subplot(212)
plt.plot([1,3],[1,2])
plt.show()

结果:
python--matplotlib总结_第14张图片

十二、图中图

代码:

import matplotlib.pyplot as plt
fig=plt.figure()
x=[1,2,3,4,5]
y=[1,2,3,4,5]
#第一种方法:
left,bottom,width,height=0.1,0.1,0.8,0.8
ax1=fig.add_axes([left,bottom,width,height])
ax1.plot(x,y,'r')
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_title('a')

left,bottom,width,height=0.2,0.6,0.25,0.25
ax1=fig.add_axes([left,bottom,width,height])
ax1.plot(x,y,'r')
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_title('a')
#第二种方法:
plt.axes([.6,.2,.25,.25])
plt.plot(x,y)
plt.show()


结果:
python--matplotlib总结_第15张图片

十三、主次坐标

代码:

import matplotlib.pyplot as plt
x=[1,2,3,4,5]
y1=[1,2,3,4,5]
y2=[5,4,3,2,1]
fig,ax1=plt.subplots()
ax2=ax1.twinx()
ax1.plot(x,y1,'g-')
ax2.plot(x,y2,'k--')

ax1.set_xlabel('x')
ax1.set_ylabel('y1',color='g')
ax2.set_ylabel('y2',color='k')
plt.show()

结果:
python--matplotlib总结_第16张图片

十四、动态图

代码:

import matplotlib.pyplot as plt
from matplotlib import animation
import numpy as np
fig,ax=plt.subplots()
x=np.arange(0,2*np.pi,0.01)
line,=ax.plot(x,np.sin(x))#,表示取列表的第一位
def animate(i):
    line.set_ydata(np.sin(x+i/10))
    return line,
def init():
    line.set_ydata(np.sin(x))
    return line,
ani=animation.FuncAnimation(fig=fig,func=animate,frames=100,init_func=init,interval=20,blit=False)
plt.show()

结果:
python--matplotlib总结_第17张图片

十五、时间处理,轴标签斜

代码:

from datetime import datetime
#时间的运算
x2=time.strptime(数据,'%Y/%m/%d %H:%M:%S')
y2 = time.strptime(数据, '%Y/%m/%d %H:%M:%S')
x1=time.mktime(x2)
y1=time.mktime(y2)
#倾斜
plt.xticks(rotation=45)

你可能感兴趣的:(python--matplotlib总结)