我已经用python包装了一个C库,并使用ctypes并调用了这些DLL。然后我创建了一个可打印出我所有数据的for循环。这里是我包装的代码的一小部分。使用for-loop值创建基本图
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等于指向包含所有数据的对象的指针。 我很难将这些数据转化为图表。 idk我做错了什么,因为在大多数matplotlib示例中,他们只是创建随机数据并绘制它。我需要一种方法将数据导入图表。 这不起作用:
plt.plot(x, y)
plt.show()
它建立一个图表,但它并不在数据填充到图形。这是我的图表看起来不太好的。
我的问题是这样的:
我怎样才能从值对打印清单我的数据为基本图形?
您是否尝试给线条添加颜色? plt.plot(x,y,' - r') –
您的x和y会在for循环中重新初始化,我想您可能想要构建一个列表。 –
我想用'plot(g [0] .time,g [0] .data [0] .f)'应该有效吗? – Bart