目录
基本用法
引用模块 matplotlib.pyplot 和 numpy
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-1,1,100)
plt.figure(1)
y1=x**2+1
y2=x+1
plt.plot(x,y1)
plt.plot(x,y2)
plt.show()
坐标轴设置
用到lim label ticks
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-2,2,100)
plt.figure(1)
y1=x**2+1
plt.plot(x,y1,color='green', linewidth=1.0, linestyle='--')#设置颜色 粗细 格式
plt.xlim((-1,2))#设置x轴坐标范围
plt.ylim((0,5)) #设置y轴坐标范围
plt.xlabel('i am x')#设置x轴标签名
plt.ylabel('i am y')#设置y轴标签名
plt.xticks(np.linspace(-2,2,5))#设置x轴坐标
plt.yticks([0,1,2,3,4,5],['worset','bad','normal','good','very good','best'])
plt.show()
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-2,2,100)
plt.figure(1)
y1=x**2+1
plt.plot(x,y1,color='green', linewidth=1.0, linestyle='--')
plt.xlim((-1,2))
plt.ylim((0,5))
plt.xlabel('i am x')
plt.ylabel('i am y')
plt.xticks(np.linspace(-2,2,5))
plt.yticks([0,1,2,3,4,5],['worset','bad','normal','good','very good','best'])
ax = plt.gca()#取四个轴
ax.set_ylim(-1,4)#用axis来设置y轴范围
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',0))#设置坐标轴位置
ax.spines['left'].set_position(('data',0))
plt.show()
legend图例
plt.legend(loc='lower right')
Annotation标注
plt.scatter(x0,y0,s=50,c='r')
plt.text(0.1,3,r'$This\ is\ the\ some\ text.\ \mu\ \sigma_i\ \alpha_t$', fontdict={'size':7,'color':'r'})
Scatter散点图
import matplotlib.pyplot as plt
import numpy as np
n =1024
x=np.random.normal(0,1,n)#随机生成均值为0方差为1
y=np.random.normal(0,1,n)
c=np.arctan2(x,y)
plt.scatter(x,y,s=50,c=c,alpha=0.5)#alpha透明度
plt.xlim((-1.5,1.5))
plt.ylim((-1.5,1.5))
plt.show()
Bar柱状图
import matplotlib.pyplot as plt
import numpy as np
n =10
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='#9999ff',edgecolor='white')
plt.bar(x,-y2,facecolor='#ff9999',edgecolor='white')
for X,Y in zip(x,y1):
plt.text(X + 0, Y + 0.05, '%.2f' % Y, ha='center', va='bottom') # ha:横向对齐方式 va:纵向对齐方式
for X, Y in zip(x, y2):
plt.text(X + 0, -Y - 0.05, '%.2f' % Y, ha='center',va='top')
plt.xlim(-1,n)
plt.ylim(-1.25,1.25)
plt.xticks(())
plt.yticks(())
plt.show()
Contours等高线图
import matplotlib.pyplot as plt
import numpy as np
def f(x, y):#返回高度
return (1 - x/2 + x**5 + y**3) * np.exp(-x**2 - y**2)
n = 250
x = np.linspace(-3,3,n)#生成坐标
y = np.linspace(-3,3,n)
X,Y = np.meshgrid(x,y)#联立网格
plt.contourf(X, Y, f(X, Y), 8, alpha=0.5, cmap=plt.cm.hot)#设置背景
C = plt.contour(X, Y, f(X, Y), 8, colors='black', linewidth=0.5)#设置线
plt.clabel(C, inline=True, fontsize=10)#设置等高线图
plt.xticks(())#取消坐标
plt.yticks(())
plt.show()
Image图像
import matplotlib.pyplot as plt
import numpy as np
mp = np.array([0.32432423,0.36234235,0.423532525,
0.36235235,0.43543252,0.523532623,
0.42235245,0.52552352,0.652523523]).reshape(3,3)#转换成二维数组
plt.imshow(mp, interpolation='sinc',cmap='bone',origin='upper')#interpolation
plt.colorbar(shrink=0.6)#压缩柱状图 还有很多参数
plt.xticks(())
plt.yticks(())
plt.show()
3D数据
引入3D模块
from mpl_toolkits.mplot3d import Axes3D
3D坐标轴显示
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
plt.show()
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-5,5,0.2)
Y = np.arange(-5,5,0.2)
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=('rainbow'))#stride网格参数 cmap颜色
ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap='rainbow')#dir位置 offset相对位置
ax.set_zlim(-2,2)#z轴范围
plt.show()
Subplot多合一显示和分格显示
多合一显示
import matplotlib.pyplot as plt
plt.figure()
plt.subplot(2,1,1)
plt.subplot(2,2,3)
plt.subplot(2,2,4)
plt.show()
分格显示
import matplotlib.pyplot as plt
plt.figure()
ax1 = plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1)
ax1.set_title("1")
ax2 = plt.subplot2grid((3,3),(1,0),colspan=2,rowspan=1)
ax2.set_title("2")
ax3 = plt.subplot2grid((3,3),(1,2),colspan=1,rowspan=2)
ax3.set_title("3")
ax4 = plt.subplot2grid((3,3),(2,0),colspan=1,rowspan=1)
ax4.set_title("4")
ax5 = plt.subplot2grid((3,3),(2,1),colspan=1,rowspan=1)
ax5.set_title("5")
plt.show()
图中图
import matplotlib.pyplot as plt
fig = plt.figure()
x = [1,2,3,4,5,6,7]
y = [1,3,4,2,5,8,6]
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')
left,bottom,width,height=0.2,0.6,0.25,0.25
ax2 = fig.add_axes([left,bottom,width,height])
ax2.plot(y,x,'b')
plt.show()