python画图|步进图基本教程

有些时候,画顺滑的图形不能满足表达需求,可能需要使用步进图形来辅助表达。

【1】官网教程

首先我们乖乖进入官网,使用下述链接直达:

Step Demo — Matplotlib 3.9.2 documentation

这里有两个图形作为示例,为高效学习,我们先掌握第一个,对代码进行详细解读。

【2】代码解读

首先引入计算和画图模块:numpy和matplotlib。

import matplotlib.pyplot as plt #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算

然后展开变量定义:

x = np.arange(14) #定义自变量
y = np.sin(x / 2) #定义因变量

之后就定义了画步进图,一共三种风格:

plt.step(x, y + 2, label='pre (default)') #画第一个步进图,类型为pre
plt.plot(x, y + 2, 'o--', color='grey', alpha=0.3) #输出步进图

plt.step(x, y + 1, where='mid', label='mid') #画第二个步进图,类型为mid
plt.plot(x, y + 1, 'o--', color='grey', alpha=0.3) #输出步进图

plt.step(x, y, where='post', label='post') #画第三个步进图,类型为post
plt.plot(x, y, 'o--', color='grey', alpha=0.3) #输出步进图

再之后给图形增加网格,设置图例名:

plt.grid(axis='x', color='0.95') #画网格
plt.legend(title='Parameter where:') #设置图例名
plt.title('plt.step(where=...)') #设置图名

最后一步,输出图形:

plt.show() #输出图形

整个代码的核心在于plt.step()函数,具体链接如下:

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.step.html#matplotlib.pyplot.step

在 plt.step()函数中,有如下要素:

matplotlib.pyplot.step(x, y, *args, where='pre', data=None, **kwargs)

输出图形为:

图1

x:自变量

y:因变量

where:三种类型,pre((x[i-1], x[i])区间取值 y[i]),mid((x[i-0.5], x[i+0.5])区间取值 y[i]),post((x[i], x[i+1])区间取值 y[i]

data:标签名称

其他。

至此,增减注释后的完整代码为:

import matplotlib.pyplot as plt #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算

x = np.arange(14) #定义自变量
y = np.sin(x / 2) #定义因变量

plt.step(x, y + 2, label='pre (default)') #画第一个步进图,类型为pre
plt.plot(x, y + 2, 'o--', color='grey', alpha=0.3) #输出步进图

plt.step(x, y + 1, where='mid', label='mid') #画第二个步进图,类型为mid
plt.plot(x, y + 1, 'o--', color='grey', alpha=0.3) #输出步进图

plt.step(x, y, where='post', label='post') #画第三个步进图,类型为post
plt.plot(x, y, 'o--', color='grey', alpha=0.3) #输出步进图

plt.grid(axis='x', color='0.95') #画网格
plt.legend(title='Parameter where:') #设置图例名
plt.title('plt.step(where=...)') #设置图名
plt.show() #输出图形

【3】代码改写

精简代码,全部写到一个plt.step()函数中:

plt.step(x, y + 2, x,y+1,x,y,label='mid') #画步进图,类型为pre
plt.plot(x, y + 2, x,y+1,x,y,'o--', color='grey', alpha=0.3) #输出步进图

 此时的输出结果为:

图2

可见,所有图形同时输出了,不过采用了mid也就是中间步进的方式,输出的实现图也仅仅是最后一个图形采用了虚线。

此时的完整代码为:

import matplotlib.pyplot as plt #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算

x = np.arange(14) #定义自变量
y = np.sin(x / 2) #定义因变量

plt.step(x, y + 2, x,y+1,x,y,label='mid') #画步进图,类型为pre
plt.plot(x, y + 2, x,y+1,x,y,'o--', color='grey', alpha=0.3) #输出步进图

plt.grid(axis='x', color='0.95') #画网格
plt.legend(title='Parameter where:') #设置图例名
plt.title('plt.step(where=...)') #设置图名
plt.show() #输出图形

【4】其他更改

在其余位置,尝试更改线型和输出透明度:

plt.plot(x, y + 2,'--',x,y+1,x,y,'o--', color='g', alpha=0.9) #输出步进图

y+2后增加“--”标识,用以绘制虚线。

同时颜色也修改为了green绿色,

此时的输出图形为:

图3

 线型设置可参考下述链接:

matplotlib.pyplot.plot — Matplotlib 3.9.2 documentation

【5】总结

学习了step步进图的基本画法,掌握了线型设置和颜色修改的技巧。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值