Python中循环迭代的用户控制

2024-04-25 23:36:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python的世界还很陌生,我已经在很多地方寻找了一种方法来克服我遇到的一个问题。你知道吗

首先,一些背景以便尽可能清楚。我已经创建了一个(相当大的)CAN数据消息字典。CAN消息ID用作键,而每条消息在一个列表中与其对应的时间戳配对。结果是一个字典,其格式如下(但要大得多):

d = {'1011C0BB': [[30.1429, '0FFF0000']],
    '00132058': [[30.1942, '00'], [30.2512, '00'], [40.5021, '00]]

……等等。要点是字典有一堆键,所有的键都有数据列表,这些列表的长度是可变的。你知道吗

我试图想象这些位是如何随着时间的推移而变化的,这样我就可以尝试对它们的含义(或者至少是它们的分组)进行反向工程。我用以下代码实现了逐点逐位绘制数据:

colors = list(product(np.arange(0.00,1.00,0.20),repeat=3))
rgb = 0

for i in range(0,len(rawdata_dct.keys())):
    plt.hold(True)
    plt.figure(i)
    plt.title(rawdata_dct.keys()[i])
    for j in range(0,len(rawdata_dct.values()[i])):
        timedata = []
        timedata.append(rawdata_dct.values()[i][j][0])
        for k in range(0,len(rawdata_dct.values()[i][j][1])):
            bitdata = []
            bitdata.append(int(rawdata_dct.values()[i][j][1][k],16))
            for m in range(0,len(bitdata)):
                plt.plot(timedata, bitdata[m], marker='o', 
                        color=[colors[rgb][0],colors[rgb][1],colors[rgb][2]],
                        label=rawdata_dct.keys()[i])
            del bitdata
        del timedata
    rgb += 1

这可能不是最干净或最具python风格的方法,但它可以工作,并且它会根据CAN ID对数据进行颜色编码(最初的目的是生成一个包含所有数据的图形,但这不是一种有效的查看方式)

我的主要问题是,它产生了大量的图形(或者一个图形上有大量的彩色数据,但有一些细微的改动)。我希望找到一种方法,用用户输入控制最外层循环的迭代。最终的目标是,脚本填充第一个图形,然后等待用户输入(例如,按“空格”),然后再填充下一个图形。我怎么能做到这一点?你知道吗


Tags: 数据方法in图形forlenrangeplt