情节矩形波蟒

时间:2017-06-23 14:20:52

标签: python pandas dataframe

我有一个如下所示的数据框:

DF:

    Start     End  Value
0       0   98999      0
1   99000  101999      1
2  102000  155999      0
3  156000  161999      1
4  162000  179999      0

我想绘制一个来自"开始"的矩形波。到"结束"而且价值在"价值" 请你帮助我好吗?谢谢!

我的尝试:

    for j in range(0,df.shape[0]):
        plt.figure()
        plt.plot(range(df['Start'].iloc[j],df['End'].iloc[j]), np.ones(df['End'].iloc[j]-df['Start'].iloc[j])*df['Value'].iloc[j])    

但是它用不同的数字绘制......

3 个答案:

答案 0 :(得分:1)

也许您可以使用plt.step绘制逐步函数:

import pandas as pd
from matplotlib import pyplot as plt

df = pd.DataFrame({'End': [98999, 101999, 155999, 161999, 179999],
 'Start': [0, 99000, 102000, 156000, 162000],
 'Value': [0, 1, 0, 1, 0]})

plt.step(df.Start, df.Value, where='post')

这会将每个Value的{​​{1}}值映射到下一个Start

step plot

答案 1 :(得分:0)

有点慢......

sensorStates.data

enter image description here

答案 2 :(得分:0)

我相信step下的matplotlib.pyplot功能正是您所寻找的。

您可以尝试以下代码:

import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame([[0, 98999, 0],[99000, 101999, 1],[102000, 155999, 0],[156000, 161999, 1],[162000, 179999, 0]],columns=["Start","End","Value"])
plt.step(df["Start"],df["Value"],where="post")
plt.show()

这将最终显示如下图: enter image description here