plt画图

写在前面:理解作图的画板

参考简书

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

一、作图

1、中文显示、负号显示

plt.rcParams['font.sans-serif']=['SimHei']#SimHei代表黑体
plt.rcParams['axes.unicode_minus']=False#minus代表负号

2、图例

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垂直移动的距离

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

4、饼图

plt.pie(x)

5、设置三维图

# 新建一个figure()
fig = plt.figure(figsize=(10,10))
# 在figure()中增加一个subplot,并且返回axes
ax = fig.add_subplot(111,projection='3d')

6、颜色映射colormap

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为形状

7、设置图像侧边的颜色对照卡

#接上文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]])#同时为多个子图设置同一个颜色卡

8、添加坐标轴标签

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

9、用户自定义函数格式化图标,多用与坐标轴

matplotlib.ticker.FuncFormatter()

10、设置图的大小

fig = plt.figure(figsize=(10,10))

11、设置图的标题

ax.set_title()

二、函数理解

1、plt.subplots()函数返回的是图形对象和所有的axes对象
2、ax.flatten()函数可以将mn的子图展平成1nm的axes组
3、subplots() 函数和 subplot() 函数使用方法类似。其不同之处在于,subplots() 既创建了一个包含子图区域的画布,又创建了一个 figure 图形对象,而 subplot()只是创建一个包含子图区域的画布。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值