我明白了。 可以在数据指定的任意位置使用1创建列表,在其他位置使用0。 了解列表后,这可以由defbinary_data(data ) :轻松完成
return [1ifxindataelse0forxinrange (data [-1 ]1)
变成这样。 data=[ 1,2,4,5,9 ]
bindata=binary_data(data )
bindata
[ 0,1,1,0,1,1,0,0,0,1 ]
现在你要做的就是策划那个。 或者更好的步骤是二进制数据,所以step ) )看起来更好。 导入编号为NP
frommatplotlib.pyplotimportstep,show
efbinary_data(data ) :
return [1ifxindataelse0forxinrange (data [-1 ]1)
data=[ 1,2,4,5,9 ]
bindata=binary_data(data )
xaxis=NP.arange(0,data([-1]1) ) ) ) ) ) ) ) ) ) ) )。
yaxis=NP.Array(Bindata ) )。
step(Xaxis,yaxis ) )。
show () )
要绘制重叠在同一图表上的多个数据数组,请调整binary_data,例如defbinary_data(data )、yshift=0) :
return [ yshift1ifxindataelseyshiftforxinrange [-1 ]1]
现在,您可以通过设置yshift参数在y轴上移动数据数组。 e,g data=[ 1,2,4,5,9 ]
bindata1=binary_data(data )
bindata1
[ 0,1,1,0,1,1,0,0,0,1 ]
bindata2=binary_data(data,2 ) )。
bindata2
[ 2,3,3,2,3,3,2,2,2,3 ]
如果将data1、data2、data3重叠,则会变成这样。 导入编号为NP
frommatplotlib.pyplotimportstep,show
efbinary_data(data,yshift=0) :
return [ yshift1ifxindataelseyshiftforxinrange [-1 ]1]
data1=[ 1,2,4,5,9 ]
bindata1=binary_data(data1 )
x1=NP.arange(0,data1(-1 )1) ) )。
y1=NP.Array(bindata1 ) )。
dt a2=[ 1,4,9 ]
bindata2=binary _ data (data 2,2 ) )。
x2=NP.arange(0,data2(-1 )1) ) ) )。
y2=NP.Array(Bindata2) ) ) ) ) ) ) ) ) ) ) )。
data3=[ 1,2,8,9 ]
bindata3=binary _ data (data 3,4 ) )。
x3=NP.arange(0,data3(-1 )1) ) )。
y3=NP.Array(Bindata3) ) ) ) ) ) ) ) )。
step(x1,y1,x2,y2,x3,y3 ) ) )。
show () )
data=[ 1,2,4,5,9 ],
[ 1,4,9 ],
[ 1,2,8,9 ]
for shift,dinenumerate(data ) :
bindata=binary_data(d,2 * shift ) )
x=NP.arange(0,d[-1] 1) ) ) )。
y=NP.Array(Bindata ) )。
step(x,y ) )。
show () )
最后,如果您正在处理不同长度的数据数组(如[ 1,2 ]或[ 15,16 ] ),并且不喜欢在图中间消失的图,则可以再次调整binary_data ),强制将其范围设置为最大数据范围。 导入编号为NP
frommatplotlib.pyplotimportstep,show
defbinary_data(data,limit,yshift=0) :
return [ yshift1ifxindataelseyshiftforxinrange (limit ) ]
data=[ 1,2,4,5,9,12,13,14 ],
[1、4、10、11、20、21、22],
[1、2、3、4、15、16、17、18]
# find out the longest data to plot
limit=max([x[-1]1forxindata]
x=NP.arange(0,limit ) )。
for shift,dinenumerate(data ) :
bindata=binary_data(d,limit,2 * shift ) ) ) ) ) )0) 0
y=NP.Array(Bindata ) )。
step(x,y ) )。
show () )
编辑:您自己的binary_data (如果要执行从data到bindata的转换,而不是定义函数,则为numpy.zeros_like ),如@ImportanceOfBeingErnest建议的重叠时请注意: import numpy as np
frommatplotlib.pyplotimportstep,show
data=[ 1,2,4,5,9,12,13,14 ],
[1、4、10、11、20、21、22],
[1、2、3、4、15、16、17、18]
# find out the longest data to plot
limit=max([x[-1]1forxindata]
x=NP.arange(0,limit ) )。
for shift,dinenumerate(data ) :
y=NP.Zeros_like(x )
y[d]=1
# don't forget to shift
y =2*shift
step(x,y ) )。
show () )