matplotlib最详细画图实战

最近做毕设,仔细地又学了下matplotlib,将看到的博客用自己理解的语言重新组织下整理在这里。

fig, ax = plt.subplots()

坚决使用这种创建图的方式,不要走捷径,对画复杂图有很多帮助。
在这里插入图片描述
在这里插入图片描述
这里的axes其实可以理解成坐标的概念(1,1),(1,2)子图位置

图中各部分关键字

在这里插入图片描述

画布

fig, ax = plt.subplots(figsize=(14,7))# 一个ax 一个子图
fig, ax = plt.subplots(2,1,figsize=(14,7))#2行一列 两个子图ax[0]. ax[1]

画数据

依旧不使用plt.XXX的画法
用ax.plot()来画

import os
import matplotlib.pyplot as plt
import numpy as np


x=np.arange(0,1.4,0.001)

interval0=[1 if i<1 else 0 for i in x]
interval1=[1 if i>=1 else 0 for i in x]
y=interval0*x+interval1*1 ###分阶函数的实现方式
fg,axis=plt.subplots()
axis.plot(x,y)
plt.show()

在这里插入图片描述

细节处理

坐标从0开始

上图坐标默认不是从0开始

ax.set_xlim(0,1.4)#通过这个限制x轴原点在0
ax.set_ylim(0,1)

在这里插入图片描述

显示legend
ax.plot(x,y,label='Smooth L1')#需要这里说明下label 用于显示legend
ax.set_xlabel('regression error')
ax.set_ylabel('gradient')
ax.legend()

legend位置调整

plt.legend(loc='upper center', bbox_to_anchor=(0.6,0.95),ncol=3,fancybox=True,shadow=True)

上面bbox_to_anchor被赋予的二元组中,第一个数值用于控制legend的左右移动,值越大越向右边移动,第二个数值用于控制legend的上下移动,值越大,越向上移动。
一般情况下,loc属性设置为’best’就足够应付了

plt.legend(handles = [l1, l2,], labels = ['a', 'b'], loc = 'best')

此外还有另外loc属性有:‘upper right’, ‘upper left’, ‘lower left’, ‘lower right’, ‘right’, ‘center left’, ‘center right’, ‘lower center’, ‘upper center’, ‘center’
在这里插入图片描述
在这里插入图片描述

网格线
ax.grid(axis='both')#生成网格线
坐标轴上小刻度
ax.minorticks_on()#显示小间隔

在这里插入图片描述

把曲线上的数据点标记出来

在这里插入图片描述

plt.plot(x,y,markevery=10)

在这里插入图片描述

标记最大最小值和特定数值标注

1.显示数值
在这里插入图片描述
2.最大最小值
在这里插入图片描述

隐藏上面和右边的轴
ax.spines['right'].set_color('none')#将图像右边的轴设为透明
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')#将x轴刻度设在下面的坐标轴上
ax.yaxis.set_ticks_position('left')
添加线型和颜色
plt.plot(x,y,color='b',linestyle=':',marker = 'o',markerfacecolor='r',markersize = 10)
plt.xlabel('xlabel',fontsize = 25)
plt.ylabel('ylabel',fontsize = 16)

线型颜色待查目录

字符|类型 | 字符|类型
---|--- | --- | ---
`  '-'	`| 实线 | `'--'`|	虚线
`'-.'`|	虚点线 | `':'`|	点线
`'.'`|	点 | `','`| 像素点
`'o'`	|圆点 | `'v'`|	下三角点
`'^'`|	上三角点 | `'<'`|	左三角点
`'>'`|	右三角点 | `'1'`|	下三叉点
`'2'`|	上三叉点 | `'3'`|	左三叉点
`'4'`|	右三叉点 | `'s'`|	正方点
`'p'`	| 五角点 | `'*'`|	星形点
`'h'`|	六边形点1 | `'H'`|	六边形点2 
`'+'`|	加号点 | `'x'`|	乘号点
`'D'`|	实心菱形点 | `'d'`|	瘦菱形点 
`'_'`|	横线点 | |
字符 | 颜色
-- | -- 
`‘b’`|	蓝色,blue
`‘g’`|	绿色,green
`‘r’`|	红色,red
`‘c’`|	青色,cyan
`‘m’`|	品红,magenta
`‘y’`|	黄色,yellow
`‘k’`|	黑色,black
`‘w’`|	白色,white
保存矢量图
fig.savefig('scatter.eps',dpi=600,format='eps')
完整程序
# -*- coding: utf-8 -*-
import os
import matplotlib.pyplot as plt
import numpy as np


x=np.arange(0,1.4,0.001)
# y=x
interval0=[1 if i<1 else 0 for i in x]
interval1=[1 if i>=1 else 0 for i in x]
y=interval0*x+interval1*1
fg,ax=plt.subplots()
ax.plot(x,y,label='Smooth L1')
ax.set_xlabel('regression error')
ax.set_ylabel('gradient')
ax.legend()
ax.spines['right'].set_color('none')#将图像右边的轴设为透明
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')#将x轴刻度设在下面的坐标轴上
ax.yaxis.set_ticks_position('left')

# ax.spines['bottom'].set_position(('data',0))#将坐标轴的位置设在数据点原点
# ax.spines['left'].set_position(('data',0))
ax.set_aspect('equal')
ax.minorticks_on()#显示小间隔
ax.set_xlim(0,1.4)#通过这个限制x轴原点在0
ax.set_ylim(0,1)
ax.grid(axis='both')#生成网格线

# ax.xaxis.set_tick_params(rotation=45,labelsize=18,colors='w') #x轴坐标旋转颜色
# start, end = ax.get_xlim()
# ax.xaxis.set_ticks(np.arange(start, end,1))
# ax.yaxis.tick_right()


plt.show()
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值