使用 for 循环值创建基本图形

伊丽莎白

我使用 ctypes 在 python 中包装了一个 C 库并调用了 DLL。然后我创建了一个 for 循环来打印出我的所有数据。这是我包装的代码的一个小示例。

import ctypes 
from ctypes import *
import matplotlib.pyplot as plt

class ParmData(Union):
_fields_ = [
     ('c', ctypes.POINTER(ctypes.c_ubyte)),
     ('f', ctypes.POINTER(ctypes.c_float))]
class SParm(Structure):
pass
 SParm._fields_ = [
    ('data', ctypes.POINTER(ParmData)),
    ('time', ctypes.POINTER(ctypes.c_float))]

dll.readSParm.argtypes = (POINTER(SFile), c_char_p, c_double, c_double,    c_double, POINTER(TTag), c_ushort,)   
dll.readSParm.restype = POINTER(SParm)
g = dll.readSParm(SF, ParmName, startTime, stopTime, Null, None, convertType)
dll.freeSParm(g)

我想创建一个简单的图形,其中包含从 for 循环中打印出来的数据点。这是我到目前为止:

for i in range(0, 1032):
x = (g[0].time[i])
y = (g[0].data[0].f[i])
print(i, x, y)

这个 for 循环完美地工作并将所有数据打印到一个整洁的列表中,但我需要将该列表绘制成一个简单的图形。for 循环的返回如下所示:

1028 -1.2241029739379883 1.7323481895261962e+19
1029 -0.22411400079727173 2.635080461412465e+23
1030 0.7759910225868225 1.7829588197038883e+19
1031 1.7759920358657837 1.8027558490491145e+28

其中第二列对应于时间值,第三列是该时间的数据值。

我将 x 和 y 设置为指向包含所有数据的对象的指针。我很难将这些数据放入图表中。知道我做错了什么,因为在大多数 matplotlib 示例中,他们只是创建随机数据并绘制它。我需要一种方法将我的数据放入图表中。这不起作用:

plt.plot(x, y)
plt.show()

它构建了一个图形,但它不会将数据填充到图形中。这就是我的图表的样子,这是不好的。坏图

我的问题是这样的:

如何将我的数据从打印的值对列表中获取到基本图形中?

亚伦

x 和 y 是单个浮点数,而不是打印语句输出所指示的数组。plt.plot()试图在点之间画线,但由于只有一个点,所以不可能有线。我假设你想以某种方式将 x 和 y 变成值数组,也许是这样的......

x = []
y = []
for i in range(0, 1032):
    x.append(g[0].time[i])
    y.append(g[0].data[0].f[i])

然后当传递给plt.plot有多个点交替绘制如果你想在非连接点上绘制散点图,请使用plt.scatter

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章