我是靠谱客的博主 风中金鱼,最近开发中收集的这篇文章主要介绍matplotlib最详细画图实战,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近做毕设,仔细地又学了下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最详细画图实战所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部