summaryrefslogtreecommitdiffstats
path: root/TOOLS
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-10-15 22:34:14 +0200
committerwm4 <wm4@nowhere>2015-10-15 23:07:03 +0200
commit2483dab54d77288db218030910f6b1b4b08292e5 (patch)
treef401ffa6ae1c476207d9e50204a85d689860df6a /TOOLS
parent3a7a2385df1244a242591633497510f4a3c32836 (diff)
downloadmpv-2483dab54d77288db218030910f6b1b4b08292e5.tar.bz2
mpv-2483dab54d77288db218030910f6b1b4b08292e5.tar.xz
TOOLS/stats-conv: rewrite for pygtgraph
matplotlib is pathetically slow, which makes using stats-conv.py to view dumps longer than a few seconds a huge pain. pyqtgraph is slightly faster than matplotlib. Other than that, it seems to be worse in every aspect (at least for plotting), but such is life.
Diffstat (limited to 'TOOLS')
-rwxr-xr-xTOOLS/stats-conv.py40
1 files changed, 26 insertions, 14 deletions
diff --git a/TOOLS/stats-conv.py b/TOOLS/stats-conv.py
index 5884af5d46..e0b168d541 100755
--- a/TOOLS/stats-conv.py
+++ b/TOOLS/stats-conv.py
@@ -1,5 +1,6 @@
#!/usr/bin/env python3
-import matplotlib.pyplot as plot
+from pyqtgraph.Qt import QtGui, QtCore
+import pyqtgraph as pg
import sys
import re
@@ -38,8 +39,8 @@ Currently, the following event types are supported:
class G:
events = {}
start = None
- # http://matplotlib.org/api/markers_api.html#module-matplotlib.markers
- markers = ["o", "8", "s", "p", "*", "h", "+", "x", "D"]
+ markers = ["o", "s", "t", "d"]
+ curveno = 0
def find_marker():
if len(G.markers) == 0:
@@ -128,20 +129,31 @@ for e, index in zip(G.sevents, range(len(G.sevents))):
else:
e.vals = [(x, y * (m - index) / m) for (x, y) in e.vals]
-fig = plot.figure()
-fig.hold(True)
+pg.setConfigOption('background', 'w')
+pg.setConfigOption('foreground', 'k')
+app = QtGui.QApplication([])
+win = pg.GraphicsWindow()
+#win.resize(1500, 900)
+
ax = [None, None]
plots = 2 if hasval else 1
-ax[0] = fig.add_subplot(plots, 1, 1)
+ax[0] = win.addPlot()
if hasval:
- ax[1] = fig.add_subplot(plots, 1, 2, sharex=ax[0])
-legends = [[], []]
+ win.nextRow()
+ ax[1] = win.addPlot()
+ ax[1].setXLink(ax[0])
+for cur in ax:
+ if cur is not None:
+ cur.addLegend(offset = (-1, 1))
for e in G.sevents:
cur = ax[1 if e.type == "value" else 0]
- pl, = cur.plot([x for x,y in e.vals], [y for x,y in e.vals], label=e.name)
+ args = {'name': e.name,'antialias':True}
if e.type == "event-signal":
- plot.setp(pl, marker = e.marker, linestyle = "None")
-for cur in ax:
- if cur is not None:
- cur.legend()
-plot.show()
+ args['symbol'] = e.marker
+ args['pen'] = None
+ else:
+ args['pen'] = pg.mkPen(pg.intColor(G.curveno), width=0)
+ G.curveno += 1
+ n = cur.plot([x for x,y in e.vals], [y for x,y in e.vals], **args)
+
+QtGui.QApplication.instance().exec_()