Roni Goldshmidt commited on
Commit
a197e82
·
1 Parent(s): a5b8c6f

Initial leaderboard setup

Browse files
Files changed (2) hide show
  1. .ipynb_checkpoints/app-checkpoint.py +44 -28
  2. app.py +44 -28
.ipynb_checkpoints/app-checkpoint.py CHANGED
@@ -198,31 +198,39 @@ with tab2:
198
  )
199
  st.plotly_chart(fig, use_container_width=True)
200
 
201
- # Create a single legend figure
202
- legend_fig = go.Figure()
203
- for model in selected_models:
204
- legend_fig.add_trace(go.Scatter(
205
- x=[None],
206
- y=[None],
207
- mode='markers',
208
- name=model,
209
- showlegend=True
210
- ))
211
- legend_fig.update_layout(
212
- showlegend=True,
213
- legend=dict(
214
- orientation="h",
215
- yanchor="middle",
216
- y=1,
217
- xanchor="center",
218
- x=0.5,
219
- font=dict(size=12)
220
- ),
221
- margin=dict(l=0, r=0, t=0, b=0),
222
- height=50
223
- )
224
- st.plotly_chart(legend_fig, use_container_width=True)
225
-
 
 
 
 
 
 
 
 
226
  # Individual Precision-Recall plots for each class
227
  unique_classes = class_data['Class'].unique()
228
  num_classes = len(unique_classes)
@@ -237,7 +245,15 @@ with tab2:
237
  class_idx = row * 3 + col_idx
238
  if class_idx < num_classes:
239
  current_class = unique_classes[class_idx]
240
- class_specific_data = class_data[class_data['Class'] == current_class]
 
 
 
 
 
 
 
 
241
 
242
  fig = px.scatter(
243
  class_specific_data,
@@ -245,7 +261,7 @@ with tab2:
245
  y='Recall',
246
  color='Model',
247
  title=f'Precision vs Recall: {current_class}',
248
- height=300 # Adjust height as needed
249
  )
250
 
251
  # Update layout for better visibility
@@ -253,7 +269,7 @@ with tab2:
253
  xaxis_range=[0, 1],
254
  yaxis_range=[0, 1],
255
  margin=dict(l=40, r=40, t=40, b=40),
256
- showlegend=False, # Hide individual legends
257
  )
258
 
259
  # Add diagonal reference line
 
198
  )
199
  st.plotly_chart(fig, use_container_width=True)
200
 
201
+ # Create a shared legend container
202
+ legend_data = []
203
+ for i, model in enumerate(selected_models):
204
+ legend_data.append({
205
+ 'Model': model,
206
+ 'Visible': True,
207
+ 'Index': i
208
+ })
209
+ legend_df = pd.DataFrame(legend_data)
210
+
211
+ # Create toggles for models using st.columns
212
+ st.markdown("### Select Models to Display:")
213
+
214
+ # Calculate how many columns we need (aim for about 4-5 models per row)
215
+ models_per_row = 4
216
+ num_rows = (len(selected_models) + models_per_row - 1) // models_per_row
217
+
218
+ for row in range(num_rows):
219
+ cols = st.columns(models_per_row)
220
+ for col_idx in range(models_per_row):
221
+ model_idx = row * models_per_row + col_idx
222
+ if model_idx < len(selected_models):
223
+ model = selected_models[model_idx]
224
+ # Store toggle state in session state with unique key
225
+ toggle_key = f"toggle_{model}"
226
+ if toggle_key not in st.session_state:
227
+ st.session_state[toggle_key] = True
228
+ st.session_state[toggle_key] = cols[col_idx].checkbox(
229
+ model,
230
+ value=st.session_state[toggle_key],
231
+ key=f"model_toggle_{model}"
232
+ )
233
+
234
  # Individual Precision-Recall plots for each class
235
  unique_classes = class_data['Class'].unique()
236
  num_classes = len(unique_classes)
 
245
  class_idx = row * 3 + col_idx
246
  if class_idx < num_classes:
247
  current_class = unique_classes[class_idx]
248
+
249
+ # Filter data based on visible models
250
+ visible_models = [model for model in selected_models
251
+ if st.session_state[f"toggle_{model}"]]
252
+
253
+ class_specific_data = class_data[
254
+ (class_data['Class'] == current_class) &
255
+ (class_data['Model'].isin(visible_models))
256
+ ]
257
 
258
  fig = px.scatter(
259
  class_specific_data,
 
261
  y='Recall',
262
  color='Model',
263
  title=f'Precision vs Recall: {current_class}',
264
+ height=300
265
  )
266
 
267
  # Update layout for better visibility
 
269
  xaxis_range=[0, 1],
270
  yaxis_range=[0, 1],
271
  margin=dict(l=40, r=40, t=40, b=40),
272
+ showlegend=False # Hide individual legends
273
  )
274
 
275
  # Add diagonal reference line
app.py CHANGED
@@ -198,31 +198,39 @@ with tab2:
198
  )
199
  st.plotly_chart(fig, use_container_width=True)
200
 
201
- # Create a single legend figure
202
- legend_fig = go.Figure()
203
- for model in selected_models:
204
- legend_fig.add_trace(go.Scatter(
205
- x=[None],
206
- y=[None],
207
- mode='markers',
208
- name=model,
209
- showlegend=True
210
- ))
211
- legend_fig.update_layout(
212
- showlegend=True,
213
- legend=dict(
214
- orientation="h",
215
- yanchor="middle",
216
- y=1,
217
- xanchor="center",
218
- x=0.5,
219
- font=dict(size=12)
220
- ),
221
- margin=dict(l=0, r=0, t=0, b=0),
222
- height=50
223
- )
224
- st.plotly_chart(legend_fig, use_container_width=True)
225
-
 
 
 
 
 
 
 
 
226
  # Individual Precision-Recall plots for each class
227
  unique_classes = class_data['Class'].unique()
228
  num_classes = len(unique_classes)
@@ -237,7 +245,15 @@ with tab2:
237
  class_idx = row * 3 + col_idx
238
  if class_idx < num_classes:
239
  current_class = unique_classes[class_idx]
240
- class_specific_data = class_data[class_data['Class'] == current_class]
 
 
 
 
 
 
 
 
241
 
242
  fig = px.scatter(
243
  class_specific_data,
@@ -245,7 +261,7 @@ with tab2:
245
  y='Recall',
246
  color='Model',
247
  title=f'Precision vs Recall: {current_class}',
248
- height=300 # Adjust height as needed
249
  )
250
 
251
  # Update layout for better visibility
@@ -253,7 +269,7 @@ with tab2:
253
  xaxis_range=[0, 1],
254
  yaxis_range=[0, 1],
255
  margin=dict(l=40, r=40, t=40, b=40),
256
- showlegend=False, # Hide individual legends
257
  )
258
 
259
  # Add diagonal reference line
 
198
  )
199
  st.plotly_chart(fig, use_container_width=True)
200
 
201
+ # Create a shared legend container
202
+ legend_data = []
203
+ for i, model in enumerate(selected_models):
204
+ legend_data.append({
205
+ 'Model': model,
206
+ 'Visible': True,
207
+ 'Index': i
208
+ })
209
+ legend_df = pd.DataFrame(legend_data)
210
+
211
+ # Create toggles for models using st.columns
212
+ st.markdown("### Select Models to Display:")
213
+
214
+ # Calculate how many columns we need (aim for about 4-5 models per row)
215
+ models_per_row = 4
216
+ num_rows = (len(selected_models) + models_per_row - 1) // models_per_row
217
+
218
+ for row in range(num_rows):
219
+ cols = st.columns(models_per_row)
220
+ for col_idx in range(models_per_row):
221
+ model_idx = row * models_per_row + col_idx
222
+ if model_idx < len(selected_models):
223
+ model = selected_models[model_idx]
224
+ # Store toggle state in session state with unique key
225
+ toggle_key = f"toggle_{model}"
226
+ if toggle_key not in st.session_state:
227
+ st.session_state[toggle_key] = True
228
+ st.session_state[toggle_key] = cols[col_idx].checkbox(
229
+ model,
230
+ value=st.session_state[toggle_key],
231
+ key=f"model_toggle_{model}"
232
+ )
233
+
234
  # Individual Precision-Recall plots for each class
235
  unique_classes = class_data['Class'].unique()
236
  num_classes = len(unique_classes)
 
245
  class_idx = row * 3 + col_idx
246
  if class_idx < num_classes:
247
  current_class = unique_classes[class_idx]
248
+
249
+ # Filter data based on visible models
250
+ visible_models = [model for model in selected_models
251
+ if st.session_state[f"toggle_{model}"]]
252
+
253
+ class_specific_data = class_data[
254
+ (class_data['Class'] == current_class) &
255
+ (class_data['Model'].isin(visible_models))
256
+ ]
257
 
258
  fig = px.scatter(
259
  class_specific_data,
 
261
  y='Recall',
262
  color='Model',
263
  title=f'Precision vs Recall: {current_class}',
264
+ height=300
265
  )
266
 
267
  # Update layout for better visibility
 
269
  xaxis_range=[0, 1],
270
  yaxis_range=[0, 1],
271
  margin=dict(l=40, r=40, t=40, b=40),
272
+ showlegend=False # Hide individual legends
273
  )
274
 
275
  # Add diagonal reference line