@@ -169,6 +169,17 @@ def regular_scale(val_range: tuple[float, float]) -> alt.Scale:
169169 return alt .Scale (domain = val_range )
170170
171171
172+ def regular_scale_axis (val_range : tuple [float , float ]) -> alt .Axis :
173+ """Generate a nice regular scale axis.
174+
175+ :param val_range: Range
176+ :return: Axis
177+ """
178+ val_min , val_max = val_range
179+ fmt = ".1f" if (val_max - val_min ) < 3 else ".0f"
180+ return alt .Axis (format = fmt )
181+
182+
172183def log_scale (val_range : tuple [float , float ]) -> alt .Scale :
173184 """Generate a log scale specification.
174185
@@ -188,7 +199,7 @@ def log_scale_axis(val_range: tuple[float, float]) -> alt.Axis:
188199 fmt = ".0e" if max_exp > 3 else alt .Undefined
189200 vals = log_scale_values (val_range )
190201 label_expr_condition = " ||\n " .join (
191- f"(abs(datum.value - { v } ) < 1e-5)" for v in vals
202+ f"(abs(datum.value - { v } ) / abs( { v } ) < 1e-5)" for v in vals
192203 )
193204 label_expr = f"({ label_expr_condition } ) ? datum.label : ''"
194205 return alt .Axis (format = fmt , values = log_scale_ticks (val_range ), labelExpr = label_expr )
@@ -291,6 +302,9 @@ def transformed_spline_interpolator(
291302 :param x_data: X data
292303 :return: Y interpolator
293304 """
305+ valid = np .isfinite (y_data )
306+ x_data = np .compress (valid , x_data )
307+ y_data = np .compress (valid , y_data )
294308 interp_trans_ = CubicSpline (x_trans (x_data ), y_trans (y_data ))
295309
296310 def interp_ (x : Any ) -> np .ndarray :
0 commit comments