Python:绘制真/假信号的步长函数

Python:绘制真/假信号的步长函数,python,matplotlib,plot,Python,Matplotlib,Plot,我有一个Python字典,每个变量都包含一个元组,其中包含一个时间点数组和一个数字数组(1/0),表示变量在某个时间点保存的布尔值。例如: dictionary["a"] = ([0,1,3], [1,1,0]) 表示变量“a”在时间点0和1均为真,在时间点2“a”持有任意值,在时间点3为假 我想使用matplotlib.pyplot生成一个类似如下的绘图: 我已经试过这样的方法: import matplotlib.pyplot as plt plt.figure(1) graphcount

我有一个Python字典,每个变量都包含一个元组,其中包含一个时间点数组和一个数字数组(1/0),表示变量在某个时间点保存的布尔值。例如:

dictionary["a"] = ([0,1,3], [1,1,0])
表示变量
“a”
在时间点0和1均为真,在时间点2
“a”
持有任意值,在时间点3为假

我想使用
matplotlib.pyplot
生成一个类似如下的绘图: 我已经试过这样的方法:

import matplotlib.pyplot as plt
plt.figure(1)
graphcount = 1
for x in dictionary:
    plt.subplot(len(dictionary), 1, graphcount)
    plt.step(dictionary[x][0], dictionary[x][1])
    plt.xlabel("time")
    plt.ylabel(x)
    graphcount += 1
plt.show()

但它并没有给我正确的结果。例如,如果
字典[“a”]=([2],[1])
则根本不显示任何行。有人能告诉我怎么做吗?谢谢大家!

根据您的描述,直线应从第一点开始,最后一点结束。如果第一个点和最后一个点是相同的,那么您的线将只由一个点组成。要查看只有一个点的直线,需要使用可见标记

关于跳跃的位置,报告说:

其中:[“前”|“后”|“中”]

如果“pre”(默认值),则从x[i]到x[i+1]的间隔具有级别y[i+1]

如果为“post”,则该间隔为y级[i]

如果为“中间”,则y中的跳跃发生在x值之间的中间

所以我想你想要
'mid'

dictionary = {}
dictionary['a'] = ([0,1,3], [1,1,0])
dictionary['b'] = ([2], [1])

plt.figure(1)
graphcount = 1
for x in dictionary:
    plt.subplot(len(dictionary), 1, graphcount)
    plt.step(dictionary[x][0], dictionary[x][1], 'o-', where='mid')
    plt.xlabel("time")
    plt.ylabel(x)
    graphcount += 1
plt.show()

您想为每个变量单独绘制一个曲线图,还是在同一个图形的线条上绘制所有曲线图?谢谢-这已经很有帮助了。然而,我希望这条线路在整个时间范围内继续下去。因此,我不仅希望变量
b有一个点,而且希望有一个连续的假信号。我想我的例子不适合这个案例。此外,对于变量
a
,在您的示例中,在第1点不清楚a是真还是假。这就是为什么我希望步骤总是在整个时间点之间,因此在0.5、1.5、2.5等等。我该怎么做?不清楚你所说的“整个时间框架”是什么意思。你只给了
b
一分,那么程序怎么能猜出时间范围呢?请在问题中澄清这一点。有关步骤的位置,请参见我的编辑。