Added CSV exporter (only for PlotItem)

This commit is contained in:
Luke Campagnola 2012-04-04 09:32:38 -04:00
parent 6aef85331e
commit fffbd5548e

61
exporters/CSVExporter.py Normal file
View File

@ -0,0 +1,61 @@
import pyqtgraph as pg
from pyqtgraph.Qt import QtGui, QtCore
from Exporter import Exporter
from pyqtgraph.parametertree import Parameter
__all__ = ['CSVExporter']
class CSVExporter(Exporter):
Name = "CSV from plot data"
windows = []
def __init__(self, item):
Exporter.__init__(self, item)
self.params = Parameter(name='params', type='group', children=[
{'name': 'separator', 'type': 'list', 'value': 'comma', 'values': ['comma', 'tab']},
])
def parameters(self):
return self.params
def export(self, fileName=None):
if not isinstance(self.item, pg.PlotItem):
raise Exception("Matplotlib export currently only works with plot items")
if fileName is None:
self.fileSaveDialog(filter=["*.csv", "*.tsv"])
return
fd = open(fileName, 'w')
data = []
header = []
for c in self.item.curves:
data.append(c.getData())
header.extend(['x', 'y'])
if self.params['separator'] == 'comma':
sep = ','
else:
sep = '\t'
fd.write(sep.join(header) + '\n')
i = 0
while True:
done = True
for d in data:
if i < len(d[0]):
fd.write('%g%s%g%s'%(d[0][i], sep, d[1][i], sep))
done = False
else:
fd.write(' %s %s' % (sep, sep))
fd.write('\n')
if done:
break
i += 1
fd.close()