diff options
author | Johnathan Corgan <johnathan@corganlabs.com> | 2016-03-27 06:51:27 -0700 |
---|---|---|
committer | Johnathan Corgan <johnathan@corganlabs.com> | 2016-03-27 06:51:27 -0700 |
commit | 315880c4c9dc6a3ff2c87552fada960ed337d9ff (patch) | |
tree | 56646f5f90d063096652df7a6fa8d81a0d222d26 /gnuradio-runtime/python | |
parent | 61ac8a9a685ef64db3d4478f4072b705d059e6ec (diff) | |
parent | d44dae83c5b486ad320cf2274e4fbcf79c9178c1 (diff) |
Merge branch 'master' into next
Diffstat (limited to 'gnuradio-runtime/python')
-rw-r--r-- | gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx | 46 |
1 files changed, 29 insertions, 17 deletions
diff --git a/gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx b/gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx index bb53e02cc4..cc9f76f864 100644 --- a/gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx +++ b/gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx @@ -28,7 +28,18 @@ try: matplotlib.use("QT4Agg") import matplotlib.pyplot as plt from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas - from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar + + # Manage different matplotlib versions + try: + from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar + except ImportError: + try: + from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar + except ImportError: + print sys.argv[0], "could not load QTAgg backend." + sys.exit(1) + + from matplotlib.figure import Figure except ImportError: print sys.argv[0], "requires networkx and matplotlib.", \ @@ -42,6 +53,11 @@ import itertools from gnuradio import gr, ctrlport from gnuradio.ctrlport.GrDataPlotter import * +if float(nx.__version__) >= 1.11: + from networkx.drawing.nx_agraph import graphviz_layout +else: + graphviz_layout = nx.graphviz_layout + class MAINWindow(QtGui.QMainWindow): def minimumSizeHint(self): return QtGui.QSize(800,600) @@ -310,13 +326,12 @@ class DataTable(QtGui.QWidget): self.sp = self.f.add_subplot(111) self.sp.autoscale_view(True,True,True) self.sp.set_autoscale_on(True) - self.canvas = FigureCanvas(self.f) # set up tabs self.tabber = QtGui.QTabWidget(); self.layout.addWidget(self.tabber); self.tabber.addTab(self.perfTable,"Table View"); - self.tabber.addTab(self.canvas, "Graph View"); + self.tabber.addTab(self.f.canvas, "Graph View"); # set up timer self.timer = QtCore.QTimer() @@ -402,7 +417,7 @@ class DataTableBuffers(DataTable): for r,w in zip(self.disp, sorted_fullness): r.set_height(w[1]) - self.canvas.draw() + self.f.canvas.draw() class DataTableRuntimes(DataTable): def __init__(self, radioclient, G): @@ -423,7 +438,7 @@ class DataTableRuntimes(DataTable): total_work = 1 work_times = dict(zip( map(lambda x: x.split("::")[0], wrk_knobs.keys()), - map(lambda x: x.value/total_work, wrk_knobs.values()))) + map(lambda x: 1e-10 + x.value/total_work, wrk_knobs.values()))) # update table view if(self.perfTable.isVisible()): @@ -441,7 +456,6 @@ class DataTableRuntimes(DataTable): else: sorted_work = work_times.items() - f = plt.figure(self.f.number) if(not self.disp): self.disp = self.sp.bar(range(0,len(sorted_work)), map(lambda x: x[1], sorted_work), @@ -456,7 +470,7 @@ class DataTableRuntimes(DataTable): for r,w in zip(self.disp, sorted_work): r.set_height(w[1]) - self.canvas.draw() + self.f.canvas.draw() class MForm(QtGui.QWidget): def update(self): @@ -775,11 +789,10 @@ class MForm(QtGui.QWidget): self.sp.autoscale_view(True,True,True); self.sp.set_autoscale_on(True) - self.canvas = FigureCanvas(self.f) - self.layout.addWidget(self.canvas); + self.layout.addWidget(self.f.canvas); - self.pos = nx.graphviz_layout(self.G); - #self.pos = nx.pygraphviz_layout(self.G); + self.pos = graphviz_layout(self.G); + #self.pos = pygraphviz_layout(self.G); #self.pos = nx.spectral_layout(self.G); #self.pos = nx.circular_layout(self.G); #self.pos = nx.shell_layout(self.G); @@ -840,14 +853,14 @@ class MForm(QtGui.QWidget): def drawGraph(self): self.do_update = True - self.canvas.updateGeometry() + self.f.canvas.updateGeometry() self.sp.clear() plt.figure(self.f.number) plt.subplot(111) nx.draw(self.G, self.pos, edge_color=self.edge_weights, node_color='#A0CBE2', - width=map(lambda x: 3+math.log(x), self.edge_weights), + width=map(lambda x: 3+math.log(x+1e-20), self.edge_weights), node_shape="s", node_size=self.node_weights, edge_cmap=plt.cm.Reds, @@ -857,8 +870,7 @@ class MForm(QtGui.QWidget): nx.draw_networkx_labels(self.G, self.pos, font_size=12) - self.canvas.draw() - self.canvas.show() + self.f.canvas.show() def updateGraph(self): @@ -872,7 +884,7 @@ class MForm(QtGui.QWidget): nx.draw_networkx_edges(self.G, self.pos, edge_color=self.edge_weights, - width=map(lambda x: 3+math.log(x), self.edge_weights), + width=map(lambda x: 3+math.log(x+1e-20), self.edge_weights), edge_cmap=plt.cm.Reds, ax=self.sp, arrows=False) @@ -880,7 +892,7 @@ class MForm(QtGui.QWidget): nx.draw_networkx_labels(self.G, self.pos, ax=self.sp, font_size=12) - self.canvas.draw() + self.f.canvas.draw() class MyApp(object): |