1919#
2020
2121import pyrasterframes .rf_types
22+ import numpy as np
2223
2324
24- def tile_to_png (tile , fig_size = None ):
25+ def tile_to_png (tile , lower_percentile = 1 , upper_percentile = 99 , title = None , fig_size = None ):
2526 """ Provide image of Tile."""
2627 if tile .cells is None :
2728 return None
@@ -39,13 +40,25 @@ def tile_to_png(tile, fig_size=None):
3940 canvas = FigureCanvas (fig )
4041 axis = fig .add_subplot (1 , 1 , 1 )
4142
42- axis .imshow (tile .cells )
43+ arr = tile .cells
44+
45+ def normalize_cells (cells , lower_percentile = lower_percentile , upper_percentile = upper_percentile ):
46+ assert upper_percentile > lower_percentile , 'invalid upper and lower percentiles'
47+ lower = np .percentile (cells , lower_percentile )
48+ upper = np .percentile (cells , upper_percentile )
49+ cells = np .clip (cells , lower , upper )
50+ return (cells - lower ) / (upper - lower )
51+
52+ axis .imshow (normalize_cells (arr ))
4353 axis .set_aspect ('equal' )
4454 axis .xaxis .set_ticks ([])
4555 axis .yaxis .set_ticks ([])
4656
47- axis .set_title ('{}, {}' .format (tile .dimensions (), tile .cell_type .__repr__ ()),
48- fontsize = fig_size [0 ]* 4 ) # compact metadata as title
57+ if title is None :
58+ axis .set_title ('{}, {}' .format (tile .dimensions (), tile .cell_type .__repr__ ()),
59+ fontsize = fig_size [0 ]* 4 ) # compact metadata as title
60+ else :
61+ axis .set_title (title , fontsize = fig_size [0 ]* 4 ) # compact metadata as title
4962
5063 with io .BytesIO () as output :
5164 canvas .print_png (output )
0 commit comments