idolezal commited on
Commit
484188b
·
1 Parent(s): 19ecc78

Heatmap: Abandoning estimated constants and calculating the external dimensions of the graph using JS and the internal dimensions of the graph

Browse files
Files changed (1) hide show
  1. analyze_winscore.py +45 -4
analyze_winscore.py CHANGED
@@ -9,6 +9,7 @@ import numpy as np
9
  from bokeh.plotting import figure
10
  from bokeh.models import LabelSet, LogScale, ColumnDataSource, tickers
11
  from bokeh.models import LinearColorMapper, HoverTool
 
12
  from bokeh.palettes import Turbo256 # A color palette with enough colors
13
 
14
  # Function to fit a polynomial curve and return the x and y values of the fitted curve
@@ -222,13 +223,15 @@ def create_heatmap(data_matrix, original_scores,
222
  FONTSIZE = 9
223
 
224
  n_rows, n_cols = data_matrix.shape
225
- y_axis_size = 253
226
- x_axis_size = 278
227
  cell_size = 22
 
 
228
  if plot_width == None:
229
- plot_width = n_rows * cell_size + (y_axis_size if y_axis_visible else 0)
 
230
  if plot_height == None:
231
- plot_height = n_cols * cell_size + (x_axis_size if x_axis_visible else 0)
 
232
 
233
  if selected_rows is not None:
234
  # Select only the specified rows (models)
@@ -327,6 +330,44 @@ def create_heatmap(data_matrix, original_scores,
327
  # Hide the axis labels
328
  p.xaxis.visible = x_axis_visible
329
  p.yaxis.visible = y_axis_visible
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
330
 
331
  return p
332
 
 
9
  from bokeh.plotting import figure
10
  from bokeh.models import LabelSet, LogScale, ColumnDataSource, tickers
11
  from bokeh.models import LinearColorMapper, HoverTool
12
+ from bokeh.models import CustomJS
13
  from bokeh.palettes import Turbo256 # A color palette with enough colors
14
 
15
  # Function to fit a polynomial curve and return the x and y values of the fitted curve
 
223
  FONTSIZE = 9
224
 
225
  n_rows, n_cols = data_matrix.shape
 
 
226
  cell_size = 22
227
+ plot_inner_width = None
228
+ plot_inner_height = None
229
  if plot_width == None:
230
+ plot_inner_width = n_rows * cell_size
231
+ plot_width = plot_inner_width
232
  if plot_height == None:
233
+ plot_inner_height = n_cols * cell_size
234
+ plot_height = plot_inner_height
235
 
236
  if selected_rows is not None:
237
  # Select only the specified rows (models)
 
330
  # Hide the axis labels
331
  p.xaxis.visible = x_axis_visible
332
  p.yaxis.visible = y_axis_visible
333
+
334
+ # Fix inner size
335
+ if plot_inner_width != None:
336
+ p.js_on_change('inner_width', CustomJS(args=dict(p=p, target=plot_inner_width), code="""
337
+ // current inner width of the plot area
338
+ const iw = p.inner_width;
339
+ // calculate the margin between full width and inner plot area
340
+ const margin = p.width - iw;
341
+ // adjust total width so that inner width matches the desired target
342
+ p.width = target + margin;
343
+
344
+ // remove only this callback from the inner_width callbacks array
345
+ const cbs = p.js_property_callbacks.inner_width;
346
+ for (let i = 0; i < cbs.length; i++) {
347
+ if (cbs[i] === this) {
348
+ cbs.splice(i, 1);
349
+ break;
350
+ }
351
+ }
352
+ """))
353
+ if plot_inner_height != None:
354
+ p.js_on_change('inner_height', CustomJS(args=dict(p=p, target=plot_inner_height), code="""
355
+ // current inner height of the plot area
356
+ const ih = p.inner_height;
357
+ // calculate the margin between full height and inner plot area
358
+ const margin = p.height - ih;
359
+ // adjust total height so that inner height matches the desired target
360
+ p.height = target + margin;
361
+
362
+ // remove only this callback from the inner_height callbacks array
363
+ const cbs = p.js_property_callbacks.inner_height;
364
+ for (let i = 0; i < cbs.length; i++) {
365
+ if (cbs[i] === this) {
366
+ cbs.splice(i, 1);
367
+ break;
368
+ }
369
+ }
370
+ """))
371
 
372
  return p
373