我正在尝试使用Zedgraph在Ironpython中绘制大型csv文件的图形,但是由于文件太大,我遇到了内存错误。
我搜索了几个答案,表明我应该在加载时处理数据,但是我认为ZedGraph绘图方法需要一个包含X和Y值的数组。
这是我用于加载csv数据的代码
def readData(self, end = -1):
counter = 0
sampleArray = []
tempReader = csv.reader(self.file, delimiter = ',')
for row in tempReader:
sampleArray.append(row)
if counter == end: #Break the reading loop until the 'desired count' value is reached (provided by user; 'None' by default)
break
counter += 1
return sampleArray
这是我的代码,用于在调用上述方法后绘制数据图
for i in xrange(len(sample_array)):
self.y_values.Add(float(sample_array[i].pop()))
self.x_values.Add(float(sample_array[i].pop()))
self.x_array = Array[float](self.x_values)
self.y_array = Array[float](self.y_values)
self.point_list = FilteredPointList(self.x_array, self.y_array)
my_curve = self.my_pane.AddCurve("Curve", self.point_list, Color.Yellow, SymbolType.None)
所以,我的问题是,有没有一种方法可以使用ZedGraph来绘制大型csv数据,而无需加载X和Y值?
或者,是否存在另一种方法将数据存储为减少内存使用的数组? 由于我使用Ironpython,因此无法使用Numpy或Pandas之类的库。
更新: 我使用bin文件来存储和读取数据,它似乎比读取和存储csv文件小得多,但仍然不能解决问题。 当bin文件很大时,zedgraph仍然会出现内存错误。