Source code for landlab.plot.event_handler
#! /usr/bin/env python
"""Functions to interact with figures that plot Landlab grid data."""
from pprint import pprint
[docs]
def query_grid_on_button_press(event, grid):
"""Print and returns node information using an imshow plot.
This function is triggered when a mouse button is pressed on the matplotlib
figure connected by event. Coordinates of grid and its node attributes are
queried only when the event location is within the axes of the figure.
The node whose attributes are queried is the node at the center of the
cell that contains the event coordinates.
This function only works with raster model grids.
Parameters
----------
event : matplotlib event
Event associated with a figure canvas using mpl_connect().
grid : RasterModelGrid
Grid containing the attributes to print.
Returns
-------
query_results :
Dictionary containing grid query results.
"""
from ..grid.raster import RasterModelGrid
if not isinstance(grid, RasterModelGrid):
raise TypeError("Only raster grids can be queried.")
if all([event.xdata, event.ydata]):
x_pressed = int(round(event.xdata / grid.dx))
y_pressed = int(round(event.ydata / grid.dy))
query_results = {
"grid location": {"x_coord": event.xdata, "y_coord": event.ydata},
"node": {
"ID": grid.grid_coords_to_node_id(y_pressed, x_pressed),
"column": x_pressed,
"row": y_pressed,
},
}
print("\nGrid query results:\n")
pprint(query_results, width=1)
return query_results