概述
最近做毕设,仔细地又学了下matplotlib,将看到的博客用自己理解的语言重新组织下整理在这里。
文章目录
- fig, ax = plt.subplots()
- 图中各部分关键字
- 画布
- 画数据
- 细节处理
- 坐标从0开始
- 显示legend
- 网格线
- 坐标轴上小刻度
- 把曲线上的数据点标记出来
- 标记最大最小值和特定数值标注
- 隐藏上面和右边的轴
- 添加线型和颜色
- 保存矢量图
- 完整程序
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()
最后
以上就是风中金鱼为你收集整理的matplotlib最详细画图实战的全部内容,希望文章能够帮你解决matplotlib最详细画图实战所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复