python中的快速脏条纹图?

2024-05-19 06:22:57 发布

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

我有一些python代码,经常接收一条包含时间戳和边缘转换(从低到高或从高到低)的消息。我想在条形图上绘制每个转换,以便以最少的工作量快速而脏兮兮地显示数字波形。

你能推荐一些简单的方法或软件包吗?

我也不反对以csv格式导出数据,并将其加载到另一个程序中,如果这样做更容易的话。

编辑:

试过的CairoPlot:

>>> data = [(10, 0), (11, 1), (12.5, 0), (15, 1)]
>>> def fn(t):
...     for d in data:
...             if t > d[0]:
...                     return d[1]
...     return data[-1][1]
...
>>> CairoPlot.function_plot( 'tester.png', data, 500, 300, discrete = True, h_bounds=( data[0][0],data[-1][0]), step = 1 )

这让我的CPU在超过10分钟的时间里保持100%的速度,并且一直在消耗内存。我在它用完所有的交换之前就把它杀了。我是做错什么了还是凯洛普洛特刚刚坏了?

进一步编辑:

我现在有了一些更可行的使用CairoPlot的方法,大致基于上面的代码。然而,由于分辨率的原因,它并不完美:我可能需要高达数十纳秒(1e-8)的分辨率才能捕捉到一些较短的脉冲。对于多秒图,使用此方法需要很长的时间。


Tags: 方法代码消息编辑datareturn时间绘制
3条回答

我自己没有用过,但也许Cairo Plot值得一看。

Matplotlib可能有用。看看这个strip chart demo

您可以尝试使用CairoPlot:

import CairoPlot

#the data list stands for your low-to-high (1) and high-to-low (0) data
data = lambda x : [0,0,1,1,0,0,1][x]
CairoPlot.function_plot( 'Up_and_Down', data, 500, 300, discrete = True, x_bounds=( 0,len(data) - 1 ), step = 1 )

有关详细信息,请检查CairoPlot

编辑:

我不明白你在这里的作用。函数图的概念是绘制函数而不是矢量。

要绘制这些点,可以使用以下方法使用函数绘制:

#notice I have split your data into two different vectors,
#one for x axis and the other one for y axis
x_data = [10, 11, 12.5, 15]
y_data = [0, 1, 0, 1]

def get_data( i ):
    if i in x_data :
        return y_data[x_data.index(i)]
    else :
        return 0

CairoPlot.function_plot( 'Up_and_Down', get_data, 500, 300, discrete = True, x_bounds=( 0,20 ), step = 0.5 )

我想那能行

对于100%固定CPU,这不应该发生。。。我今天晚些时候再看。谢谢你指点我 \欧

相关问题 更多 >

    热门问题