Commit 3ce449c7b4dbad3b728f96bf2bd502a916a53f77

Authored by Christopher Stone
1 parent 4863d03c
Exists in master

Added axis title and placeholder labels for x-axis

Showing 1 changed file with 37 additions and 8 deletions   Show diff stats
telemetry/code/monitor/graph_plotter_rewrite.py
@@ -4,6 +4,7 @@ import pyglet @@ -4,6 +4,7 @@ import pyglet
4 #import math 4 #import math
5 #import time 5 #import time
6 import serial 6 import serial
  7 +import numpy
7 8
8 from colours import * 9 from colours import *
9 10
@@ -33,12 +34,11 @@ class Plot(pyglet.window.Window): @@ -33,12 +34,11 @@ class Plot(pyglet.window.Window):
33 """Setup a the details of a plot, and create a corresponding window""" 34 """Setup a the details of a plot, and create a corresponding window"""
34 pyglet.window.Window.__init__(self, resizable=True) 35 pyglet.window.Window.__init__(self, resizable=True)
35 self.series = series 36 self.series = series
36 - self.title = self.series.title  
37 self.font = 'Arkhip' 37 self.font = 'Arkhip'
38 - self.margins = (0.05, 0.05) # Fractions of window size 38 + self.margins = (0.08, 0.08) # Fractions of window size
39 self.lines = (12, 8) 39 self.lines = (12, 8)
40 #self.resizable = True 40 #self.resizable = True
41 - self.set_caption(self.title) 41 + self.set_caption(self.series.title)
42 42
43 def on_resize(self, width, height): 43 def on_resize(self, width, height):
44 self.bounds = ((int(self.width * self.margins[0]), int(self.width * (1 - self.margins[0]))), 44 self.bounds = ((int(self.width * self.margins[0]), int(self.width * (1 - self.margins[0]))),
@@ -50,6 +50,7 @@ class Plot(pyglet.window.Window): @@ -50,6 +50,7 @@ class Plot(pyglet.window.Window):
50 self.drawBackground() 50 self.drawBackground()
51 self.drawHeading() 51 self.drawHeading()
52 self.drawXAxis() 52 self.drawXAxis()
  53 + self.drawYAxis()
53 54
54 def drawBackground(self): 55 def drawBackground(self):
55 """Draw the graph background, currently a plain colour""" 56 """Draw the graph background, currently a plain colour"""
@@ -57,15 +58,43 @@ class Plot(pyglet.window.Window): @@ -57,15 +58,43 @@ class Plot(pyglet.window.Window):
57 58
58 def drawHeading(self): 59 def drawHeading(self):
59 """Draw a title for the graph (duplicated in the window titlebar, if present""" 60 """Draw a title for the graph (duplicated in the window titlebar, if present"""
60 - heading = pyglet.text.Label(self.title, color=BLACK,  
61 - font_name=self.font, font_size=self.height*self.margins[0]*0.8, x=self.width/2, y=self.height, 61 + heading = pyglet.text.Label(self.series.title, color=BLACK,
  62 + font_name=self.font, font_size=self.height*self.margins[0]*0.6, x=self.width/2, y=self.height,
62 anchor_x='center', anchor_y='top') 63 anchor_x='center', anchor_y='top')
63 heading.draw() 64 heading.draw()
64 65
65 def drawXAxis(self): 66 def drawXAxis(self):
66 - pyglet.graphics.draw(2, pyglet.gl.GL_LINES, ('v2i', (self.bounds[0][0], self.bounds[1][0],  
67 - self.bounds[0][0], self.bounds[1][1])),  
68 - ('c3B', (0, 0, 0, 0, 0, 0))) 67 + top = self.bounds[1][1]
  68 + bot = self.bounds[1][0]
  69 + start = self.bounds[0][0]
  70 + stop = self.bounds[0][1]
  71 + increment = float(stop-start)/self.lines[0]
  72 + for x in numpy.arange(start, stop+1, increment):
  73 + # Using fp arithmetic to avoid intermittent fencepost errors
  74 + x = int(x)
  75 + pyglet.graphics.draw(2, pyglet.gl.GL_LINES, ('v2i', (x, top, x, bot)),
  76 + ('c3B', (0, 0, 0, 0, 0, 0)))
  77 + tag = pyglet.text.Label("123", color=BLACK,
  78 + font_name=self.font, font_size=self.height*self.margins[0]*0.3,
  79 + x=x, y=self.height*self.margins[0],
  80 + anchor_x='center', anchor_y='top')
  81 + tag.draw()
  82 + axistitle = pyglet.text.Label(self.series.xname, color=BLACK,
  83 + font_name=self.font, font_size=self.height*self.margins[0]*0.3, x=self.width/2, y=0,
  84 + anchor_x='center', anchor_y='bottom')
  85 + axistitle.draw()
  86 +
  87 + def drawYAxis(self):
  88 + lef = self.bounds[0][0]
  89 + rig = self.bounds[0][1]
  90 + start = self.bounds[1][0]
  91 + stop = self.bounds[1][1]
  92 + increment = float(stop-start)/self.lines[1]
  93 + for y in numpy.arange(start, stop+1, increment):
  94 + # Using fp arithmetic to avoid intermittent fencepost errors
  95 + y = int(y)
  96 + pyglet.graphics.draw(2, pyglet.gl.GL_LINES, ('v2i', (lef, y, rig, y)),
  97 + ('c3B', (0, 0, 0, 0, 0, 0)))
69 98
70 99
71 100