Skip to content

Commit b41d7d7

Browse files
committed
Fixes for vpython to adjust colorbar limits and handle graphs from merged 3d views.
1 parent 868e5f4 commit b41d7d7

File tree

1 file changed

+67
-18
lines changed

1 file changed

+67
-18
lines changed

python/rdesigneur/moogul.py

Lines changed: 67 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def __init__( self, swx = 10, swy = 10, hideAxis = True, title = "view", colorma
5656
self.colorbar = None
5757
self.valMin = 0.0
5858
self.valMmax = 1.0
59+
self.simTime = 0.0
5960
self.plotFlag_ = True
6061

6162
@staticmethod
@@ -119,6 +120,53 @@ def updateAxis( self ):
119120
self.zAx.axis = vp.vector( z.dot( right ), z.dot( up ), 0.0 )
120121
self.axisLength.text = "{:.2f} <i>u</i>m".format( dx * 1e6*self.scene.range * self.colorbar.width / self.scene.width )
121122

123+
def raiseMax( self, isDouble = False ):
124+
valRange = self.valMax - self.valMin
125+
if isDouble:
126+
self.valMax = self.valMin + 2 * valRange
127+
else:
128+
self.valMax = self.valMin + valRange * 1.1111111111111111111111
129+
130+
def lowerMax( self, isDouble = False ):
131+
valRange = self.valMax - self.valMin
132+
if isDouble:
133+
self.valMax = self.valMin + 0.5 * valRange
134+
else:
135+
self.valMax = self.valMin + valRange * 0.9
136+
137+
def raiseMin( self, isDouble = False ):
138+
valRange = self.valMax - self.valMin
139+
if isDouble:
140+
self.valMin = self.valMmax - 0.5 * valRange
141+
else:
142+
self.valMin = self.valMax - valRange * 0.9
143+
144+
def lowerMin( self, isDouble = False ):
145+
valRange = self.valMax - self.valMin
146+
if isDouble:
147+
self.valMin = self.valMax - 2 * valRange
148+
else:
149+
self.valMin = self.valMax - valRange * 1.1111111111111111111111
150+
151+
152+
153+
def scaleColorbar( self, event ):
154+
loc = event.pos
155+
#print( loc.y )
156+
if loc.y > 4 and loc.y < 4.7:
157+
self.lowerMax( self.scene.mouse.shift )
158+
self.barMax.text = "{:.3f}".format(self.valMax)
159+
elif loc.y > 4.85 and loc.y < 5.5:
160+
self.raiseMax( self.scene.mouse.shift )
161+
self.barMax.text = "{:.3f}".format(self.valMax)
162+
elif loc.y > -3.25 and loc.y < -2.6:
163+
self.raiseMin( self.scene.mouse.shift )
164+
self.barMin.text = "{:.3f}".format(self.valMin)
165+
elif loc.y > -3.95 and loc.y < -3.45:
166+
self.lowerMin( self.scene.mouse.shift )
167+
self.barMin.text = "{:.3f}".format(self.valMin)
168+
self.drawables_[0].updateLimits( self.valMin, self.valMax )
169+
122170
def innerColorbar( self, title, bg ):
123171
barWidth = SCALE_SCENE * 1.5
124172
if ( bgLookup(bg).mag < 1 ):
@@ -130,6 +178,8 @@ def innerColorbar( self, title, bg ):
130178
self.colorbar.userzoom = False
131179
self.colorbar.userspin = False
132180
self.colorbar.userpan = False
181+
#self.colorbar.bind( 'keydown', self.scaleColorbar )
182+
self.colorbar.bind( 'click', self.scaleColorbar )
133183
height = 0.10
134184
width = 5
135185
axOrigin = vp.vector( 0, -5.5, 0 )
@@ -235,14 +285,14 @@ def firstDraw( self, mergeDisplays, rotation=0.0, elev=0.0, azim=0.0, center = [
235285
else:
236286
self.doAutoscale()
237287
self.updateAxis()
288+
print( "Self.viewIDX = ", self.viewIdx, ", MOOView.viewIdx = ", MooView.viewIdx )
238289
if self.viewIdx == (MooView.viewIdx-1):
239-
self.graph = vp.graph( title = "Graph", xtitle = "Time (s)", ytitle = " Units here", width = 700, fast=False, align = "left" )
240-
self.graphPlot1 = vp.gcurve( color = vp.color.blue, interval=-1)
241-
#self.graphPlot1.data = [[0,0], [1,1],[2,0],[3,4],[4,0], [5,1]]
242-
#self.graphPlot1.plot( [[0,0], [1,1],[2,0],[3,4],[4,0]] )
290+
MooView.viewList[0].graph = vp.graph( title = "Graph", xtitle = "Time (s)", ytitle = " Units here", width = 700, fast=False, align = "left" )
291+
MooView.viewList[0].graphPlot1 = vp.gcurve( color = vp.color.blue, interval=-1)
243292

244293

245294
def updateValues( self, simTime ):
295+
self.simTime = simTime
246296
for i in self.drawables_:
247297
i.updateValues( simTime )
248298
if self.doRotation and abs( self.rotation ) < 2.0 * 3.14 / 3.0:
@@ -454,6 +504,19 @@ def updateValues( self, simTime ):
454504

455505
self.displayValues( indices )
456506

507+
def updateLimits( self, vmin, vmax ):
508+
if self.autoscale:
509+
valMin = min( self.val )
510+
valMax = max( self.val )
511+
else:
512+
valMin = self.valMin = vmin
513+
valMax = self.valMax = vmax
514+
scaleVal = NUM_CMAP * (self.val - valMin) / (valMax - valMin)
515+
#indices = scaleVal.ndarray.astype( int )
516+
indices = np.maximum( np.minimum( scaleVal, NUM_CMAP-0.5), 0.0).astype(int)
517+
self.displayValues( indices )
518+
519+
457520
def displayValues( self, indices ):
458521
for idx, seg in zip( indices, self.segments ):
459522
seg.color = self.rgb[ idx]
@@ -495,20 +558,6 @@ def plotHistory( self, path, field, graph, plot ):
495558
graph.title = path + "." + field
496559
dat = [[x,y] for x, y in zip( t, v ) ]
497560
plot.data = dat
498-
#print (dat)
499-
#print( "IN plotHistory, ", len( dat), len( v ) )
500-
#plot.data = [[x,y] for x, y in zip( t, v ) ]
501-
#plot.data = [[x,sin(x)] for x in range( 0.0, 10.0, 0.1 ) ]
502-
'''
503-
fig = plt.figure( 1 )
504-
plt.ion()
505-
plt.title( path + "." + field )
506-
plt.xlabel( "Time (s)" )
507-
plt.ylabel( field + " um, units?" )
508-
plt.plot( t, v )
509-
plt.show( block = False )
510-
fig.canvas.draw()
511-
'''
512561

513562

514563
#####################################################################

0 commit comments

Comments
 (0)