The GetValueAtLocation function method allows you to programmatically retrieve the data value that is closest to the provided location.
Example
Temperature=[20,24,21,22,25,30,29,30,25,20,15,19]
Day=FINDGEN(12) * 30 + 15
p = PLOT(Day, Temperature, 'Db-1', $
XTITLE = 'Day of Year', $
YTITLE = 'Temperature')
xy = p.GetValueAtLocation(150)
print, 'Day=', xy[0], ' Temp=', xy[1]
xy = p.GetValueAtLocation(150, /INTERPOLATE)
print, 'Day=', xy[0], ' Temp=', xy[1]
p.Crosshair.LOCATION = xy
p.Crosshair.COLOR = 'red'
p.Crosshair.THICK = 2
IDL prints:
Day= 135.000 Temp= 25.0000
Day= 150.000 Temp= 27.5000
As another example, find a data point in an image:
im = IMAGE(/TEST)
xyrgb1 = im.GetValueAtLocation(200.25, 100.4)
print, 'X Y R G B: ', xyrgb1
xyrgb2 = im.GetValueAtLocation(200.25, 100.4, /INTERPOLATE)
print, 'X Y R G B: ', xyrgb2
IDL prints:
X Y R G B: 200.000 100.000 105.000 121.000 147.000
X Y R G B: 200.250 100.400 126.600 142.600 167.400
Syntax
Result = graphic.GetValueAtLocation( X, Y, Z [, /DEVICE] [, /INTERPOLATE] [, /NORMAL] )
Return Value
The GetValueAtLocation method returns a vector containing the location and data value of the nearest point. See the table below for the contents of the result.
Arguments
The input arguments and the result depend on the graphic being queried. The following table lists the form of input arguments and the return value.
Graphic |
Arguments |
Result |
Barplot |
X |
[X, Y] |
Contour |
X, Y |
[X, Y, Z] |
Errorplot |
X |
[X, Y] |
Image |
X, Y |
[X, Y, Value] or [X, Y, R, G, B] or [X, Y, R, G, B, A]
|
Plot3D |
X, Y, Z |
[X, Y, Z] |
Plot |
X |
[X, Y] |
Polarplot |
X, Y |
[X, Y] |
Streamline |
X, Y |
[X, Y, U, V] |
Surface |
X, Y |
[X, Y, Z] |
Vector |
X, Y |
[X, Y, U, V] |
Note that the output X, Y values will be the location of the nearest data value, and will not necessarily be equal to the input X, Y.
Keywords
DEVICE
Set this keyword if the input X, Y, or Z are in device coordinates. The X, Y, Z will then be automatically converted to data coordinates.
INTERPOLATE
Set this keyword to linearly interpolate the nearest data values to the provided location. The default behavior is to find the nearest data value and return the value and its location. If INTERPOLATE is set then the returned X, Y location will be equal to the input X, Y.
NORMAL
Set this keyword if the input X, Y, or Z are in normalized coordinates. The X, Y, Z will then be automatically converted to data coordinates.
Version History
See Also
ConvertCoord Method, GetData Method, HitTest Method