Added CSV exporter (only for PlotItem)
This commit is contained in:
parent
6aef85331e
commit
fffbd5548e
61
exporters/CSVExporter.py
Normal file
61
exporters/CSVExporter.py
Normal 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()
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user