def calculateColourSchemeBoundaries(self) :
# Find minimum and maximum data values and colour scheme interval
if self.map_colour_scheme == '90%_range' :
data_5th_percentile = min(self.grid_plot_statistics['region']['percentile_5th'])
data_95th_percentile = max(self.grid_plot_statistics['region']['percentile_95th'])
scheme_interval = (data_95th_percentile - data_5th_percentile)/9
data_min = data_5th_percentile - scheme_interval
data_max = data_95th_percentile + scheme_interval
else : # fixed_range
# Resolve selected parameter/group codes
parameter_group_code = self.parameter_group_selection_map[self.parameter_group_text.get()]
parameter_code = self.parameter_via_group_selection_map[parameter_group_code][self.parameter_via_group_text[parameter_group_code].get()]
# Select fixed colour scheme via parameter codes and delta settings
if self.utilise_delta.get() :
if self.delta_as_percent.get() and self.parameter_fixed_range_colour_scheme[parameter_group_code][parameter_code].has_key('%delta') :
fixed_range_colour_scheme = self.parameter_fixed_range_colour_scheme[parameter_group_code][parameter_code]['%delta']
else :
fixed_range_colour_scheme = self.parameter_fixed_range_colour_scheme[parameter_group_code][parameter_code]['delta']
else :
fixed_range_colour_scheme = self.parameter_fixed_range_colour_scheme[parameter_group_code][parameter_code]['value']
# Prioritise min/max then first/last boundaries, use statistical min/max when neither provided
if fixed_range_colour_scheme['min'] != None :
data_min = fixed_range_colour_scheme['min']
elif fixed_range_colour_scheme['first_boundary'] != None :
data_min = None
else :
data_min = min(self.grid_plot_statistics['region']['minimum'])
if fixed_range_colour_scheme['max'] != None :
data_max = fixed_range_colour_scheme['max']
elif fixed_range_colour_scheme['last_boundary'] != None :
data_max = None
else :
data_max = max(self.grid_plot_statistics['region']['maximum'])
# Resolve scheme interval and unresolved min/max
if data_min == None and data_max == None :
scheme_interval = (fixed_range_colour_scheme['last_boundary'] - fixed_range_colour_scheme['first_boundary'])/9.0
data_min = fixed_range_colour_scheme['first_boundary'] - scheme_interval
data_max = fixed_range_colour_scheme['last_boundary'] + scheme_interval
elif data_min == None :
scheme_interval = (data_max - fixed_range_colour_scheme['first_boundary'])/10.0
data_min = fixed_range_colour_scheme['first_boundary'] - scheme_interval
elif data_max == None :
scheme_interval = (fixed_range_colour_scheme['last_boundary'] - data_min)/10.0
data_max = fixed_range_colour_scheme['last_boundary'] + scheme_interval
else :
scheme_interval = (data_max - data_min)/11.0
# Return colour scheme boundary values
if scheme_interval :
return np.arange(data_min, data_max+0.1*scheme_interval, scheme_interval)
else :
return np.arange(data_min-1.0, data_max+1.2, 0.2)
# Shared Method: Adjust Colour Scheme Zero Boundaries (used in menu colour edit and grid plot methods)
评论列表
文章目录