参考简书
Figure是matplotlib中最基础的一个对象,可以理解为是一个总的画布
Axes为画布中的一个子区域
#两种axes的获取方法画图时会只显示作画的子图
fig = plt.figure() # 生成一张画布
ax = fig.add_subplot(2,2,1) # add_subplot在画布中添加一个axes(可以理解为子区域),参数的前两个表示子区域的行列数,最后一个表示子区域的顺序
ax = plt.subplot(2,2,1) # 和fig.add_subplot作用相同,只是直接调用plt.subplot,会获取当前活跃的figure对象,然后添加子区域
#该种axes的获取方法画图时会显示创建的全部子图
fig, ax = plt.subplots(2,2) # 调用subplots会直接添加多个子区域,返回的ax是一个包含所有子区域的矩阵
ax1 = ax[0,0] # 通过下标获取需要的子区域
以线图为例
plt.plot(),实际上是获取当前的axes然后在上面作图
ax.plot()
plt.rcParams['font.sans-serif']=['SimHei']#SimHei代表黑体
plt.rcParams['axes.unicode_minus']=False#minus代表负号
plt.legend(loc='lower left',bbox_to_anchor=(0.2,0.4,0.2,0.3))
loc:图例位置,其值可以是数字,可以是字符
0: ‘best’ (自适应一个好位置)
1: ‘upper right’ (图的右上角)
2: ‘upper left’ (图左上角)
3: ‘lower left’ (图左下角)
4: ‘lower right’ (图右下角)
5: ‘right’ (图右边中间)
6: ‘center left’ (左边中间)
7: ‘center right’ (右边中间)
8: ‘lower center’ (中下面)
9: ‘upper center’ (中上面)
10: ‘center’ (中心)
bbox_to_anchor = (x,y,width,height):更加准确的调整图例位置
例如上述代码中0.2,0.4代表图例边框左下角’lower left’坐标,0.2表示水平移动的距离,0.3垂直移动的距离
plt.scatter(data3[result==-1,0],data3[result==-1,1],s=150,c='purple',marker='8',label='噪声点')
plt.scatter(data3[result==0,0],data3[result==0,1],s=150,c='orange',marker='o',label='cluster=1')
plt.scatter(data3[result==1,0],data3[result==1,1],s=150,c='green',marker='s',label='cluster=2')
plt.scatter(data3[result==2,0],data3[result==2,1],s=150,c='blue', marker='^',label='cluster=3')
plt.scatter(data3[result==3,0],data3[result==3,1],s=150,c='red',marker='*',label='cluster=4')
plt.scatter(data3[result==4,0],data3[result==4,1],s=150,c='black',marker='p',label='cluster=5')
plt.legend(loc='lower left',bbox_to_anchor=(-0.4,0.5,0.1,0.1))
plt.show()
plt.pie(x)
# 新建一个figure()
fig = plt.figure(figsize=(10,10))
# 在figure()中增加一个subplot,并且返回axes
ax = fig.add_subplot(111,projection='3d')
plt.get_cmap("seismic", 200)#得到一个色带对象
plt.get_cmap("seismic", 200)(3)#得到一个颜色对应的代码值
seismic色带名称,还有很多其他可选,比如binary等,设置colormap分为200个level,可根据画图中点的数量自定义设置
用法示例如下:
#为每个点都设置一个颜色,此图为两位坐标
n = [x_200[i]*y_200[i] for i in range(0,200)]
min_n = min(n)
max_n = max(n)
color = [plt.get_cmap("seismic", 200)(int(float(i-min_n)/(max_n-min_n+1)*200)) for i in v]
imag = ax.scatter(x_200, y_200,s=200,c=color,marker='.')#绘制二维散点图,s为散点大小,c为颜色,marker为形状
#接上文6
fig.colorbar(imag)
#单图配颜色卡
plt.colorbar()
#子图配颜色卡,ax0为子图名称
fig.colorbar(ax0,ax=ax[0])
fig.colorbar(ax1,ax=ax[1])
fig.colorbar(ax2,ax=[ax[2],ax[3]])#同时为多个子图设置同一个颜色卡
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
matplotlib.ticker.FuncFormatter()
fig = plt.figure(figsize=(10,10))
ax.set_title()
1、plt.subplots()函数返回的是图形对象和所有的axes对象
2、ax.flatten()函数可以将mn的子图展平成1nm的axes组
3、subplots() 函数和 subplot() 函数使用方法类似。其不同之处在于,subplots() 既创建了一个包含子图区域的画布,又创建了一个 figure 图形对象,而 subplot()只是创建一个包含子图区域的画布。