我正在使用 matplotlib 从数据框中绘制一些步骤函数
df['s1'].plot(c='b', drawstyle="steps-post")
df['s2'].plot(c='b', drawstyle="steps-post")
...
Run Code Online (Sandbox Code Playgroud)
结果看起来像
我想只绘制水平线,而不是连接跳跃点的垂直线。我找不到一个简单的情节参数似乎可以做到这一点。有没有办法做到这一点?
据我所知,没有内置选项可以生成没有垂直线的阶跃函数。但是您可以轻松地自己构建一个。以下使用np.nan未绘制的事实并切线。因此np.nan,在步骤之间添加会抑制垂直线。
import matplotlib.pyplot as plt
import numpy as np
def mystep(x,y, ax=None, where='post', **kwargs):
assert where in ['post', 'pre']
x = np.array(x)
y = np.array(y)
if where=='post': y_slice = y[:-1]
if where=='pre': y_slice = y[1:]
X = np.c_[x[:-1],x[1:],x[1:]]
Y = np.c_[y_slice, y_slice, np.zeros_like(x[:-1])*np.nan]
if not ax: ax=plt.gca()
return ax.plot(X.flatten(), Y.flatten(), **kwargs)
x = [1,3,4,5,8,10,11]
y = [5,4,2,7,6,4,4]
mystep(x,y, color="crimson")
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2361 次 |
| 最近记录: |