使用forloop值创建基本图形

2024-07-05 12:49:44 发布

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

我用python包装了一个C库,使用ctypes并称之为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循环打印出来的数据点。到目前为止,我得到的是:

^{pr2}$

这个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()

它构建一个图形,但它不将数据填充到图形中。这就是我的图表看起来不好。 Bad Graph

我的问题是:

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


Tags: 数据import图形示例列表formatplotlib图表
1条回答
网友
1楼 · 发布于 2024-07-05 12:49:44

x和y是单浮点数,而不是print语句输出所指示的数组。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

相关问题 更多 >