Repository: embeddings-benchmark/mteb
Pull request #2392: Add Background Gradients in Summary and Task Table
Author: login: ayush1298
Created: 2025-03-18T09:33:04Z | Merged: 2025-03-29T10:55:26Z

This PR is related to applying background gradients for all columns in summary table performance per task table on leaderboard for better visibility as described in issue #2382 

Closes #2382 
<details>
<summary> Summary Table </summary>
<img width="1474" alt="Screenshot 2025-03-26 at 10 37 57 PM" src="https://github.com/user-attachments/assets/6dcd4603-21b8-4829-81fa-28b0705fc60e" />
</details>

<details>
<summary> Performance Per Task Table </summary>
<img width="1477" alt="Screenshot 2025-03-26 at 8 19 47 PM" src="https://github.com/user-attachments/assets/398f2932-31ef-400e-88fd-fe046d310de5" />

</details>

### Code Quality
<!-- Please do not delete this -->
- [x] **Code Formatted**: Format the code using `make lint` to maintain consistent style.

### Documentation
<!-- Please do not delete this -->
- [ ] **Updated Documentation**: Add or update documentation to reflect the changes introduced in this PR.

### Testing
<!-- Please do not delete this -->
- [ ] **New Tests Added**: Write tests to cover new functionality. Validate with `make test-with-coverage`.
- [x] **Tests Passed**: Run tests locally using `make test` or `make test-with-coverage` to ensure no existing functionality is broken.

Linked issue #2382: Background gradient for all columns in summary and Task Performance table
Should we have background gradients for all columns in Summarty table similar to Zero-Shot column

![Image](https://github.com/user-attachments/assets/404cd652-e1f5-47db-8b0f-5639e0f2ff38)
Linked issue comments: user: login: Samoed
created_at: 2025-03-16T13:27:08Z
body: Example from [open llm leaderboard](https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard#/)

![Image](https://github.com/user-attachments/assets/d538a353-130a-4e79-aaba-212475b1ec4d)
author_association: MEMBER
user: login: KennethEnevoldsen
created_at: 2025-03-16T15:58:07Z
body: @Samoed the open llm leaderboard does not use gradio (used to), so I don't know if the bar is possible.

@ayush1298 I think we need a demo of this to make a good decision. A simple test is probably to download a csv an experiment a bit.
author_association: CONTRIBUTOR
user: login: ayush1298
created_at: 2025-03-17T14:45:13Z
body: @KennethEnevoldsen @Samoed https://c8b66fa14f569acb54.gradio.live/, this is link of leaderboard when I tried bit of experiments on background gradients. Color combinations may not be good(ignore it for now). Are you expecting this only?
Adding image of leaderboard also, if you face a problem with gradio link.
<details>
<summary> Leaderboard Image </summary>
<img width="1494" alt="Image" src="https://github.com/user-attachments/assets/906c2d2f-beec-4a52-80f8-a2053df3fe0b" />
</details>
author_association: COLLABORATOR
user: login: Samoed
created_at: 2025-03-17T15:09:52Z
body: I think you can change color scheme from light red to light green for all columns. Other wise looks great!
author_association: MEMBER
user: login: KennethEnevoldsen
created_at: 2025-03-17T16:29:24Z
body: I think light green would work (darker green is better) alternatively the blue one. 
author_association: CONTRIBUTOR
user: login: ayush1298
created_at: 2025-03-17T18:20:01Z
body: Should I use same color scheme for all columns?
author_association: COLLABORATOR
user: login: Samoed
created_at: 2025-03-17T18:24:06Z
body: Yes, same scheme
author_association: MEMBER
user: login: ayush1298
created_at: 2025-03-18T05:44:37Z
body: @Samoed @KennethEnevoldsen Should we want it be like Mean(Task) column or Zero-Shot column? 
author_association: COLLABORATOR
user: login: Samoed
created_at: 2025-03-18T06:30:35Z
body: I don't know the color for ZeroShot, but for Mean (Task) color looks good, but it should have more change with scores
author_association: MEMBER
user: login: ayush1298
created_at: 2025-03-18T06:35:55Z
body: I will handle color change with scores. 
I also have thought that having same color scheme for all columns will make visual distinction between columns difficult, so should we do that?
Should we also do same for performance per task table ?
author_association: COLLABORATOR
user: login: Samoed
created_at: 2025-03-18T07:32:28Z
body: Yes, a similar approach should be taken for the task table as well. I am not a fan of different colors for each column, as it would make it difficult to adapt between light and dark themes and all tasks.
author_association: MEMBER
user: login: ayush1298
created_at: 2025-03-18T09:13:34Z
body: @Samoed, I have made suggested changes. 
<details>
<summary> Leaderboard Image </summary>

<img width="1481" alt="Image" src="https://github.com/user-attachments/assets/01d43856-89d3-445d-9989-d4a6308abd0b" />

</details>

I have also changed Empty Cells in other columns to "⚠️ NA" for consistency. But, they are getting black colored. Should we want that or I try to exclude these from Background gradient?
author_association: COLLABORATOR
user: login: x-tabdeveloping
created_at: 2025-03-18T10:13:09Z
body: Doesn't this take away from the visual importance of the zero-shot column? I think there is a point to keeping it the way it is.
author_association: COLLABORATOR
user: login: ayush1298
created_at: 2025-03-18T12:26:51Z
body: @x-tabdeveloping I think having this just make better visualization as in my opinion the zero-shot will always be 1st column, followed by some columns without background gradient. So, its importance will be there.
@KennethEnevoldsen @Samoed What do you think about this?
author_association: COLLABORATOR
user: login: KennethEnevoldsen
created_at: 2025-03-18T12:38:12Z
body: I would not add the NA (especially not the warning - there is nothing to warn about).

I would probably make the color more muted in the other columns (like mean(task) in the beginning)

author_association: CONTRIBUTOR
user: login: ayush1298
created_at: 2025-03-18T13:19:16Z
body: > I would not add the NA (especially not the warning - there is nothing to warn about).
> 
> I would probably make the color more muted in the other columns (like mean(task) in the beginning)
>
Updated this in PR
author_association: COLLABORATOR

Diff:
diff --git a/mteb/leaderboard/app.py b/mteb/leaderboard/app.py
index 143d925bcd..59b28771e9 100644
--- a/mteb/leaderboard/app.py
+++ b/mteb/leaderboard/app.py
@@ -21,7 +21,7 @@
 from mteb.custom_validators import MODALITIES
 from mteb.languages import ISO_TO_LANGUAGE
 from mteb.leaderboard.figures import performance_size_plot, radar_chart
-from mteb.leaderboard.table import scores_to_tables
+from mteb.leaderboard.table import create_tables
 
 logging.getLogger("mteb.load_results.task_results").setLevel(
     logging.WARNING
@@ -234,7 +234,7 @@ def filter_models(
     zero_shot_setting="allow_all",
 )
 
-summary_table, per_task_table = scores_to_tables(
+summary_table, per_task_table = create_tables(
     [entry for entry in default_scores if entry["model_name"] in filtered_models]
 )
 
@@ -809,7 +809,7 @@ def update_tables(
                 filtered_scores.append(entry)
         else:
             filtered_scores = scores
-        summary, per_task = scores_to_tables(filtered_scores, search_query)
+        summary, per_task = create_tables(filtered_scores, search_query)
         elapsed = time.time() - start_time
         logger.info(f"update_tables callback: {elapsed}s")
         return summary, per_task
diff --git a/mteb/leaderboard/table.py b/mteb/leaderboard/table.py
index 3f11817273..3b209fac55 100644
--- a/mteb/leaderboard/table.py
+++ b/mteb/leaderboard/table.py
@@ -5,8 +5,10 @@
 from collections import defaultdict
 
 import gradio as gr
+import matplotlib.pyplot as plt
 import numpy as np
 import pandas as pd
+from matplotlib.colors import LinearSegmentedColormap
 from pandas.api.types import is_numeric_dtype
 
 from mteb.models.overview import get_model_meta
@@ -98,9 +100,18 @@ def format_zero_shot(zero_shot_percentage: int):
     return f"{zero_shot_percentage:.0f}%"
 
 
-def scores_to_tables(
-    scores_long: list[dict], search_query: str | None = None
-) -> tuple[gr.DataFrame, gr.DataFrame]:
+def create_light_green_cmap():
+    cmap = plt.cm.get_cmap("Greens")
+    num_colors = 256
+    half_colors = np.linspace(0, 0.5, num_colors)
+    half_cmap = [cmap(val) for val in half_colors]
+    light_green_cmap = LinearSegmentedColormap.from_list(
+        "LightGreens", half_cmap, N=256
+    )
+    return light_green_cmap
+
+
+def scores_to_tables(scores_long: list[dict], search_query: str | None = None):
     if not scores_long:
         no_results_frame = pd.DataFrame(
             {"No results": ["You can try relaxing your criteria"]}
@@ -196,32 +207,77 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+
+    return joint_table, per_task, score_columns, column_types
+
+
+def apply_styling(
+    joint_table: pd.DataFrame,
+    per_task: pd.DataFrame,
+    score_columns: list[str],
+    column_types: list[str],
+) -> tuple[gr.DataFrame, gr.DataFrame]:
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    numeric_data["Zero-shot"] = numeric_data["Zero-shot"].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
-            subset=["Zero-shot"],
-            vmin=50,
-            vmax=100,
-            gmap=numeric_zero_shot,
-        )
+    joint_table_style = joint_table.style.format(
+        {
+            **{column: "{:.2f}" for column in score_columns},
+            "Rank (Borda)": "{:.0f}",
+        },
+        na_rep="",
     )
+    joint_table_style = joint_table_style.highlight_min(
+        "Rank (Borda)", props="font-weight: bold"
+    ).highlight_max(subset=score_columns, props="font-weight: bold")
+
+    # Apply background gradients for each selected column
+    for col in gradient_columns:
+        if col in joint_table.columns:
+            mask = numeric_data[col].notna()
+            if col != "Zero-shot":
+                gmap_values = numeric_data[col] * 100
+                cmap = light_green_cmap
+                joint_table_style = joint_table_style.background_gradient(
+                    cmap=cmap,
+                    subset=pd.IndexSlice[mask, col],
+                    gmap=gmap_values.loc[mask],
+                )
+            else:
+                gmap_values = numeric_data[col]
+                cmap = "RdYlGn"
+                joint_table_style = joint_table_style.background_gradient(
+                    cmap=cmap,
+                    subset=pd.IndexSlice[mask, col],
+                    vmin=50,
+                    vmax=100,
+                    gmap=gmap_values.loc[mask],
+                )
     task_score_columns = per_task.select_dtypes("number").columns
     per_task[task_score_columns] *= 100
     per_task_style = per_task.style.format(
         "{:.2f}", subset=task_score_columns, na_rep=""
     ).highlight_max(subset=task_score_columns, props="font-weight: bold")
+    for col in task_score_columns:
+        if col != "Model":
+            mask = per_task[col].notna()
+            per_task_style = per_task_style.background_gradient(
+                cmap=light_green_cmap,
+                subset=pd.IndexSlice[mask, col],
+                gmap=per_task[col].loc[mask],
+            )
     return (
         gr.DataFrame(
             joint_table_style,
@@ -231,3 +287,18 @@ def scores_to_tables(
         ),
         gr.DataFrame(per_task_style, interactive=False, pinned_columns=1),
     )
+
+
+def create_tables(
+    scores_long: list[dict], search_query: str | None = None
+) -> tuple[gr.DataFrame, gr.DataFrame]:
+    result = scores_to_tables(scores_long, search_query)
+    # dataframe with No Results is returned, so no need to apply styling
+    if len(result) == 2:
+        joint_table, per_task = result
+        return joint_table, per_task
+    joint_table, per_task, score_columns, column_types = result
+    summary_table, per_task_table = apply_styling(
+        joint_table, per_task, score_columns, column_types
+    )
+    return summary_table, per_task_table
diff --git a/scripts/make_leaderboard.py b/scripts/make_leaderboard.py
index fed85e383f..4e322b3210 100644
--- a/scripts/make_leaderboard.py
+++ b/scripts/make_leaderboard.py
@@ -7,7 +7,7 @@
 import pandas as pd
 
 import mteb
-from mteb.leaderboard.table import scores_to_tables
+from mteb.leaderboard.table import create_tables
 from mteb.load_results import load_results
 
 logging.basicConfig(level=logging.INFO)
@@ -64,7 +64,7 @@ def load_leaderboard(
     scores_long = benchmark_results_filtered.get_scores(format="long")
 
     # Convert scores into leaderboard tables
-    summary_gr_df, per_task_gr_df = scores_to_tables(scores_long=scores_long)
+    summary_gr_df, per_task_gr_df = create_tables(scores_long=scores_long)
 
     # Convert Gradio DataFrames to Pandas
     summary_df = pd.DataFrame(


Reviews:
user: login: Samoed
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-18T11:33:29Z
user: login: ayush1298
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-18T12:56:16Z
user: login: Samoed
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-18T13:03:52Z
user: login: KennethEnevoldsen
body: I think we should merge this in then. I started reviewing the code and seems like there are at least a few things that I might need some clarification of
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-23T18:06:22Z
user: login: ayush1298
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-24T05:02:59Z
user: login: ayush1298
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-24T05:03:04Z
user: login: ayush1298
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-24T05:03:10Z
user: login: ayush1298
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-24T05:03:26Z
user: login: ayush1298
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-24T05:03:51Z
user: login: ayush1298
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-24T05:20:28Z
user: login: KennethEnevoldsen
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-24T15:01:27Z
user: login: KennethEnevoldsen
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-24T15:02:27Z
user: login: ayush1298
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-24T15:13:24Z
user: login: ayush1298
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-24T15:14:11Z
user: login: ayush1298
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-24T18:33:38Z
user: login: Samoed
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-26T13:20:56Z
user: login: KennethEnevoldsen
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-26T13:24:59Z
user: login: ayush1298
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-26T13:25:30Z
user: login: KennethEnevoldsen
body: This is starting to look much better - a minor change and then I think we are good to go. 
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-26T13:28:42Z
user: login: Samoed
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-26T13:31:43Z
user: login: KennethEnevoldsen
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-26T13:33:41Z
user: login: ayush1298
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-26T13:36:36Z
user: login: KennethEnevoldsen
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-26T13:38:04Z
user: login: KennethEnevoldsen
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-26T13:38:26Z
user: login: Samoed
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-26T13:38:36Z
user: login: ayush1298
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-26T13:47:22Z
user: login: KennethEnevoldsen
body: Only one comment left but nothing major - thanks for taking the time on this

state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T10:15:49Z
user: login: ayush1298
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-27T12:55:03Z
user: login: Samoed
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-27T12:57:08Z
user: login: ayush1298
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-27T13:09:28Z

Review comments:
diff_hunk: @@ -196,32 +196,61 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = {
+        col: "Greens" for col in joint_table.columns if col not in excluded_columns
+    }
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
-            subset=["Zero-shot"],
-            vmin=50,
-            vmax=100,
-            gmap=numeric_zero_shot,
-        )
+    joint_table_style = joint_table.style.format(
+        {
+            **{column: "{:.2f}" for column in score_columns},
+            "Rank (Borda)": "{:.0f}",
+        },
+        na_rep="⚠️ NA",
     )
+    joint_table_style = joint_table_style.highlight_min(
+        "Rank (Borda)", props="font-weight: bold"
+    ).highlight_max(subset=score_columns, props="font-weight: bold")
+
+    # Apply background gradients for each selected column
+    for col, cmap in gradient_columns.items():
+        if col in joint_table.columns and numeric_data[col].notna().sum() > 0:
+            mask = numeric_data[col].notna()
+            if col != "Zero-shot":
+                gmap_values = numeric_data[col] * 100
+            else:
+                gmap_values = numeric_data[col]
+
+            joint_table_style = joint_table_style.background_gradient(
+                cmap=cmap,
+                subset=pd.IndexSlice[mask, col],
+                gmap=gmap_values.loc[mask],
+            )
     task_score_columns = per_task.select_dtypes("number").columns
     per_task[task_score_columns] *= 100
+    per_task_numeric = per_task.copy()
     per_task_style = per_task.style.format(
-        "{:.2f}", subset=task_score_columns, na_rep=""
+        "{:.2f}", subset=task_score_columns, na_rep="⚠️ NA"
     ).highlight_max(subset=task_score_columns, props="font-weight: bold")
+    for col in task_score_columns:
+        if col != "Model" and per_task_numeric[col].notna().sum() > 0:
+            mask = per_task_numeric[col].notna()
+            per_task_style = per_task_style.background_gradient(
+                cmap="Greens",
path: mteb/leaderboard/table.py
user: login: Samoed
body: Can we change color map to only include "light" green?
```python
import numpy as np
import matplotlib.pyplot as plt

# Load the colormap
cmap = plt.cm.get_cmap('Greens')

# Generate the first half of the colormap
num_colors = 256  # Default number of colors in colormap
half_colors = np.linspace(0, 0.5, num_colors // 2)  # First half range

# Create a new colormap using the first half
half_cmap = [cmap(val) for val in half_colors]

# Display the extracted colormap
fig, ax = plt.subplots(figsize=(6, 1))
ax.imshow([half_cmap], aspect='auto')
ax.set_xticks([])
ax.set_yticks([])
plt.show()
```
It would be like:
![image](https://github.com/user-attachments/assets/93280abe-fdcd-4541-b7bb-02b1a072375a)
Instead of 
![image](https://github.com/user-attachments/assets/cbad68ad-e4fb-47ab-9568-cc4e3ba31433)

created_at: 2025-03-18T11:33:29Z
author_association: MEMBER
diff_hunk: @@ -196,32 +196,61 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = {
+        col: "Greens" for col in joint_table.columns if col not in excluded_columns
+    }
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
-            subset=["Zero-shot"],
-            vmin=50,
-            vmax=100,
-            gmap=numeric_zero_shot,
-        )
+    joint_table_style = joint_table.style.format(
+        {
+            **{column: "{:.2f}" for column in score_columns},
+            "Rank (Borda)": "{:.0f}",
+        },
+        na_rep="⚠️ NA",
     )
+    joint_table_style = joint_table_style.highlight_min(
+        "Rank (Borda)", props="font-weight: bold"
+    ).highlight_max(subset=score_columns, props="font-weight: bold")
+
+    # Apply background gradients for each selected column
+    for col, cmap in gradient_columns.items():
+        if col in joint_table.columns and numeric_data[col].notna().sum() > 0:
+            mask = numeric_data[col].notna()
+            if col != "Zero-shot":
+                gmap_values = numeric_data[col] * 100
+            else:
+                gmap_values = numeric_data[col]
+
+            joint_table_style = joint_table_style.background_gradient(
+                cmap=cmap,
+                subset=pd.IndexSlice[mask, col],
+                gmap=gmap_values.loc[mask],
+            )
     task_score_columns = per_task.select_dtypes("number").columns
     per_task[task_score_columns] *= 100
+    per_task_numeric = per_task.copy()
     per_task_style = per_task.style.format(
-        "{:.2f}", subset=task_score_columns, na_rep=""
+        "{:.2f}", subset=task_score_columns, na_rep="⚠️ NA"
     ).highlight_max(subset=task_score_columns, props="font-weight: bold")
+    for col in task_score_columns:
+        if col != "Model" and per_task_numeric[col].notna().sum() > 0:
+            mask = per_task_numeric[col].notna()
+            per_task_style = per_task_style.background_gradient(
+                cmap="Greens",
path: mteb/leaderboard/table.py
user: login: ayush1298
body: This is for all columns? Or Should I kept current one for Zero-shot and this light green for rest?
created_at: 2025-03-18T12:56:15Z
author_association: COLLABORATOR
diff_hunk: @@ -196,32 +196,61 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = {
+        col: "Greens" for col in joint_table.columns if col not in excluded_columns
+    }
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
-            subset=["Zero-shot"],
-            vmin=50,
-            vmax=100,
-            gmap=numeric_zero_shot,
-        )
+    joint_table_style = joint_table.style.format(
+        {
+            **{column: "{:.2f}" for column in score_columns},
+            "Rank (Borda)": "{:.0f}",
+        },
+        na_rep="⚠️ NA",
     )
+    joint_table_style = joint_table_style.highlight_min(
+        "Rank (Borda)", props="font-weight: bold"
+    ).highlight_max(subset=score_columns, props="font-weight: bold")
+
+    # Apply background gradients for each selected column
+    for col, cmap in gradient_columns.items():
+        if col in joint_table.columns and numeric_data[col].notna().sum() > 0:
+            mask = numeric_data[col].notna()
+            if col != "Zero-shot":
+                gmap_values = numeric_data[col] * 100
+            else:
+                gmap_values = numeric_data[col]
+
+            joint_table_style = joint_table_style.background_gradient(
+                cmap=cmap,
+                subset=pd.IndexSlice[mask, col],
+                gmap=gmap_values.loc[mask],
+            )
     task_score_columns = per_task.select_dtypes("number").columns
     per_task[task_score_columns] *= 100
+    per_task_numeric = per_task.copy()
     per_task_style = per_task.style.format(
-        "{:.2f}", subset=task_score_columns, na_rep=""
+        "{:.2f}", subset=task_score_columns, na_rep="⚠️ NA"
     ).highlight_max(subset=task_score_columns, props="font-weight: bold")
+    for col in task_score_columns:
+        if col != "Model" and per_task_numeric[col].notna().sum() > 0:
+            mask = per_task_numeric[col].notna()
+            per_task_style = per_task_style.background_gradient(
+                cmap="Greens",
path: mteb/leaderboard/table.py
user: login: Samoed
body: Yes, current for Zero-shot and light for others 
created_at: 2025-03-18T13:03:52Z
author_association: MEMBER
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
-            subset=["Zero-shot"],
-            vmin=50,
-            vmax=100,
-            gmap=numeric_zero_shot,
-        )
+    joint_table_style = joint_table.style.format(
+        {
+            **{column: "{:.2f}" for column in score_columns},
+            "Rank (Borda)": "{:.0f}",
+        },
+        na_rep="",
     )
+    joint_table_style = joint_table_style.highlight_min(
+        "Rank (Borda)", props="font-weight: bold"
+    ).highlight_max(subset=score_columns, props="font-weight: bold")
+
+    # Apply background gradients for each selected column
+    for col in gradient_columns:
+        if col in joint_table.columns and numeric_data[col].notna().sum() > 0:
+            mask = numeric_data[col].notna()
+            if col != "Zero-shot":
+                gmap_values = numeric_data[col] * 100
+                cmap = light_green_cmap
+            else:
+                gmap_values = numeric_data[col]
+                cmap = "Greens"
+            joint_table_style = joint_table_style.background_gradient(
+                cmap=cmap,
+                subset=pd.IndexSlice[mask, col],
+                gmap=gmap_values.loc[mask],
+            )
     task_score_columns = per_task.select_dtypes("number").columns
     per_task[task_score_columns] *= 100
+    per_task_numeric = per_task.copy()
path: mteb/leaderboard/table.py
user: login: KennethEnevoldsen
body: Any need to copy here?
created_at: 2025-03-23T18:00:53Z
author_association: CONTRIBUTOR
diff_hunk: @@ -98,6 +100,17 @@ def format_zero_shot(zero_shot_percentage: int):
     return f"{zero_shot_percentage:.0f}%"
 
 
+def create_light_green_cmap():
+    cmap = plt.cm.get_cmap("Greens")
+    num_colors = 256
+    half_colors = np.linspace(0, 0.5, num_colors)
+    half_cmap = [cmap(val) for val in half_colors]
+    light_green_cmap = LinearSegmentedColormap.from_list(
+        "LightGreens", half_cmap, N=256
+    )
+    return light_green_cmap
+
+
 def scores_to_tables(
path: mteb/leaderboard/table.py
user: login: KennethEnevoldsen
body: Hmm can we move all the styling into a separate function?
created_at: 2025-03-23T18:02:20Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
path: mteb/leaderboard/table.py
user: login: KennethEnevoldsen
body: Why do we need the copy here?
created_at: 2025-03-23T18:02:51Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
path: mteb/leaderboard/table.py
user: login: KennethEnevoldsen
body: Was it -1 before?
created_at: 2025-03-23T18:03:57Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
path: mteb/leaderboard/table.py
user: login: KennethEnevoldsen
body: Where did this go?
created_at: 2025-03-23T18:05:03Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
-            subset=["Zero-shot"],
-            vmin=50,
-            vmax=100,
-            gmap=numeric_zero_shot,
-        )
+    joint_table_style = joint_table.style.format(
+        {
+            **{column: "{:.2f}" for column in score_columns},
+            "Rank (Borda)": "{:.0f}",
+        },
+        na_rep="",
     )
+    joint_table_style = joint_table_style.highlight_min(
+        "Rank (Borda)", props="font-weight: bold"
+    ).highlight_max(subset=score_columns, props="font-weight: bold")
+
+    # Apply background gradients for each selected column
+    for col in gradient_columns:
+        if col in joint_table.columns and numeric_data[col].notna().sum() > 0:
path: mteb/leaderboard/table.py
user: login: KennethEnevoldsen
body: Why the last check? `numeric_data[col].notna().sum() > 0`
created_at: 2025-03-23T18:05:27Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
-            subset=["Zero-shot"],
-            vmin=50,
-            vmax=100,
-            gmap=numeric_zero_shot,
-        )
+    joint_table_style = joint_table.style.format(
+        {
+            **{column: "{:.2f}" for column in score_columns},
+            "Rank (Borda)": "{:.0f}",
+        },
+        na_rep="",
     )
+    joint_table_style = joint_table_style.highlight_min(
+        "Rank (Borda)", props="font-weight: bold"
+    ).highlight_max(subset=score_columns, props="font-weight: bold")
+
+    # Apply background gradients for each selected column
+    for col in gradient_columns:
+        if col in joint_table.columns and numeric_data[col].notna().sum() > 0:
path: mteb/leaderboard/table.py
user: login: ayush1298
body: Just an extra check that we should not apply background gradient to column having all Nan values, but I will remove this as this condition will not occur.
created_at: 2025-03-24T05:02:59Z
author_association: COLLABORATOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
-            subset=["Zero-shot"],
-            vmin=50,
-            vmax=100,
-            gmap=numeric_zero_shot,
-        )
+    joint_table_style = joint_table.style.format(
+        {
+            **{column: "{:.2f}" for column in score_columns},
+            "Rank (Borda)": "{:.0f}",
+        },
+        na_rep="",
     )
+    joint_table_style = joint_table_style.highlight_min(
+        "Rank (Borda)", props="font-weight: bold"
+    ).highlight_max(subset=score_columns, props="font-weight: bold")
+
+    # Apply background gradients for each selected column
+    for col in gradient_columns:
+        if col in joint_table.columns and numeric_data[col].notna().sum() > 0:
+            mask = numeric_data[col].notna()
+            if col != "Zero-shot":
+                gmap_values = numeric_data[col] * 100
+                cmap = light_green_cmap
+            else:
+                gmap_values = numeric_data[col]
+                cmap = "Greens"
+            joint_table_style = joint_table_style.background_gradient(
+                cmap=cmap,
+                subset=pd.IndexSlice[mask, col],
+                gmap=gmap_values.loc[mask],
+            )
     task_score_columns = per_task.select_dtypes("number").columns
     per_task[task_score_columns] *= 100
+    per_task_numeric = per_task.copy()
path: mteb/leaderboard/table.py
user: login: ayush1298
body: No need of here, Will remove this one.
created_at: 2025-03-24T05:03:04Z
author_association: COLLABORATOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
path: mteb/leaderboard/table.py
user: login: ayush1298
body: Just wrote below only. I have separated it as I have to change background_gradient for all columns. 
created_at: 2025-03-24T05:03:10Z
author_association: COLLABORATOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
path: mteb/leaderboard/table.py
user: login: ayush1298
body: For Zero-shot column, it is getting modified, and we need numeric values. So, I have created copy. 
created_at: 2025-03-24T05:03:26Z
author_association: COLLABORATOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
path: mteb/leaderboard/table.py
user: login: ayush1298
body: Will remove this, it was needed for Zero-shot column only.
created_at: 2025-03-24T05:03:51Z
author_association: COLLABORATOR
diff_hunk: @@ -98,6 +100,17 @@ def format_zero_shot(zero_shot_percentage: int):
     return f"{zero_shot_percentage:.0f}%"
 
 
+def create_light_green_cmap():
+    cmap = plt.cm.get_cmap("Greens")
+    num_colors = 256
+    half_colors = np.linspace(0, 0.5, num_colors)
+    half_cmap = [cmap(val) for val in half_colors]
+    light_green_cmap = LinearSegmentedColormap.from_list(
+        "LightGreens", half_cmap, N=256
+    )
+    return light_green_cmap
+
+
 def scores_to_tables(
path: mteb/leaderboard/table.py
user: login: ayush1298
body: What other things to move apart from this creation of cmap?
created_at: 2025-03-24T05:20:27Z
author_association: COLLABORATOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
path: mteb/leaderboard/table.py
user: login: KennethEnevoldsen
body: But couldn't find the rdYlGn? is that correct?
created_at: 2025-03-24T15:01:27Z
author_association: CONTRIBUTOR
diff_hunk: @@ -98,6 +100,17 @@ def format_zero_shot(zero_shot_percentage: int):
     return f"{zero_shot_percentage:.0f}%"
 
 
+def create_light_green_cmap():
+    cmap = plt.cm.get_cmap("Greens")
+    num_colors = 256
+    half_colors = np.linspace(0, 0.5, num_colors)
+    half_cmap = [cmap(val) for val in half_colors]
+    light_green_cmap = LinearSegmentedColormap.from_list(
+        "LightGreens", half_cmap, N=256
+    )
+    return light_green_cmap
+
+
 def scores_to_tables(
path: mteb/leaderboard/table.py
user: login: KennethEnevoldsen
body: I think scores_to_table should just create the table. All styling (highlighting of highest value), should be in a separate function.
created_at: 2025-03-24T15:02:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
path: mteb/leaderboard/table.py
user: login: ayush1298
body: Yes, it is correct. Because "rdYlGn" was previously applied to Zero-Shot which we decided to change to "Greens" as it was looking better. While for other columns green_light_cmap which is created is used. 
created_at: 2025-03-24T15:13:24Z
author_association: COLLABORATOR
diff_hunk: @@ -98,6 +100,17 @@ def format_zero_shot(zero_shot_percentage: int):
     return f"{zero_shot_percentage:.0f}%"
 
 
+def create_light_green_cmap():
+    cmap = plt.cm.get_cmap("Greens")
+    num_colors = 256
+    half_colors = np.linspace(0, 0.5, num_colors)
+    half_cmap = [cmap(val) for val in half_colors]
+    light_green_cmap = LinearSegmentedColormap.from_list(
+        "LightGreens", half_cmap, N=256
+    )
+    return light_green_cmap
+
+
 def scores_to_tables(
path: mteb/leaderboard/table.py
user: login: ayush1298
body: Okay, will change this and add that to separate funcion.
created_at: 2025-03-24T15:14:11Z
author_association: COLLABORATOR
diff_hunk: @@ -98,6 +100,17 @@ def format_zero_shot(zero_shot_percentage: int):
     return f"{zero_shot_percentage:.0f}%"
 
 
+def create_light_green_cmap():
+    cmap = plt.cm.get_cmap("Greens")
+    num_colors = 256
+    half_colors = np.linspace(0, 0.5, num_colors)
+    half_cmap = [cmap(val) for val in half_colors]
+    light_green_cmap = LinearSegmentedColormap.from_list(
+        "LightGreens", half_cmap, N=256
+    )
+    return light_green_cmap
+
+
 def scores_to_tables(
path: mteb/leaderboard/table.py
user: login: ayush1298
body: Added this
created_at: 2025-03-24T18:33:38Z
author_association: COLLABORATOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
path: mteb/leaderboard/table.py
user: login: Samoed
body: I think we can left Zero-Shot column with RdYlGn
created_at: 2025-03-26T13:20:56Z
author_association: MEMBER
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
path: mteb/leaderboard/table.py
user: login: KennethEnevoldsen
body: Would def. want to keep the scheme for Zeroshot

created_at: 2025-03-26T13:24:59Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
path: mteb/leaderboard/table.py
user: login: ayush1298
body: https://github.com/embeddings-benchmark/mteb/issues/2382#issuecomment-2731825693, we discussed that the color of Mean(Task) column was looking good which was "Greens". So, I have change it.
created_at: 2025-03-26T13:25:30Z
author_association: COLLABORATOR
diff_hunk: @@ -196,32 +209,70 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+
+    return apply_styling(joint_table, per_task, score_columns, column_types)
+
+
+def apply_styling(
path: mteb/leaderboard/table.py
user: login: KennethEnevoldsen
body: <3 
created_at: 2025-03-26T13:25:34Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,32 +209,70 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+
+    return apply_styling(joint_table, per_task, score_columns, column_types)
path: mteb/leaderboard/table.py
user: login: KennethEnevoldsen
body: Ideally I would actually split this up:

```
def create_tables(...):
  df = scores_to_to_table(...) # general function that converts scores to table
  df = apply_styling(df) # applied styling specifically for the leaderboard
```

This makes the scores_to_table re-usable without the styling.
created_at: 2025-03-26T13:27:59Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
path: mteb/leaderboard/table.py
user: login: Samoed
body: I hadn't realized that you had changed the color of the "ZeroShot" column to green, because all scores are 90% and above
created_at: 2025-03-26T13:31:43Z
author_association: MEMBER
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
path: mteb/leaderboard/table.py
user: login: KennethEnevoldsen
body: Yea I also thought we were discussing the other columns.
created_at: 2025-03-26T13:33:41Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
path: mteb/leaderboard/table.py
user: login: ayush1298
body: Sorry, I think i misunderstood it. Should I change it back to RdYlGn?
created_at: 2025-03-26T13:36:36Z
author_association: COLLABORATOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
path: mteb/leaderboard/table.py
user: login: KennethEnevoldsen
body: Yes
created_at: 2025-03-26T13:38:04Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
path: mteb/leaderboard/table.py
user: login: KennethEnevoldsen
body: No worries I think it was a misunderstanding on both ends
created_at: 2025-03-26T13:38:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -196,32 +209,63 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+    excluded_columns = [
+        "Rank (Borda)",
+        "Model",
+        "Number of Parameters",
+        "Embedding Dimensions",
+        "Max Tokens",
+    ]
+    gradient_columns = [
+        col for col in joint_table.columns if col not in excluded_columns
+    ]
+    light_green_cmap = create_light_green_cmap()
+    numeric_data = joint_table.copy()
+    for col in score_columns + ["Zero-shot"]:
+        if col in numeric_data.columns:
+            numeric_data[col] = numeric_data[col].replace(-1, np.nan)
     joint_table["Zero-shot"] = joint_table["Zero-shot"].apply(format_zero_shot)
     joint_table[score_columns] = joint_table[score_columns].map(format_scores)
-    joint_table_style = (
-        joint_table.style.format(
-            {
-                **{column: "{:.2f}" for column in score_columns},
-                "Rank (Borda)": "{:.0f}",
-            },
-            na_rep="",
-        )
-        .highlight_min("Rank (Borda)", props="font-weight: bold")
-        .highlight_max(subset=score_columns, props="font-weight: bold")
-        .background_gradient(
-            cmap="RdYlGn",
path: mteb/leaderboard/table.py
user: login: Samoed
body: Yes
created_at: 2025-03-26T13:38:36Z
author_association: MEMBER
diff_hunk: @@ -196,32 +209,70 @@ def scores_to_tables(
     # setting model name column to markdown
     column_types[1] = "markdown"
     score_columns = ["Mean (Task)", "Mean (TaskType)", *mean_per_type.columns]
-    numeric_zero_shot = joint_table["Zero-shot"].copy().replace(-1, np.nan)
+
+    return apply_styling(joint_table, per_task, score_columns, column_types)
path: mteb/leaderboard/table.py
user: login: ayush1298
body: I have made changes and updated images in PR description.
created_at: 2025-03-26T13:47:22Z
author_association: COLLABORATOR
diff_hunk: @@ -231,3 +287,17 @@ def scores_to_tables(
         ),
         gr.DataFrame(per_task_style, interactive=False, pinned_columns=1),
     )
+
+
+def create_tables(
+    scores_long: list[dict], search_query: str | None = None
+) -> tuple[gr.DataFrame, gr.DataFrame]:
+    result = scores_to_tables(scores_long, search_query)
+    if len(result) == 2:
+        joint_table, per_task = result
+        return joint_table, per_task
path: mteb/leaderboard/table.py
user: login: KennethEnevoldsen
body: No styling? (can it return both two and 4 thing)?
created_at: 2025-03-27T10:15:17Z
author_association: CONTRIBUTOR
diff_hunk: @@ -231,3 +287,17 @@ def scores_to_tables(
         ),
         gr.DataFrame(per_task_style, interactive=False, pinned_columns=1),
     )
+
+
+def create_tables(
+    scores_long: list[dict], search_query: str | None = None
+) -> tuple[gr.DataFrame, gr.DataFrame]:
+    result = scores_to_tables(scores_long, search_query)
+    if len(result) == 2:
+        joint_table, per_task = result
+        return joint_table, per_task
path: mteb/leaderboard/table.py
user: login: ayush1298
body: If there are 2 results, then it means that it didn't have results.(at 2 times, it is returning dataframe with no results. So, at that time we didn't have to apply styling.
created_at: 2025-03-27T12:55:03Z
author_association: COLLABORATOR
diff_hunk: @@ -231,3 +287,17 @@ def scores_to_tables(
         ),
         gr.DataFrame(per_task_style, interactive=False, pinned_columns=1),
     )
+
+
+def create_tables(
+    scores_long: list[dict], search_query: str | None = None
+) -> tuple[gr.DataFrame, gr.DataFrame]:
+    result = scores_to_tables(scores_long, search_query)
+    if len(result) == 2:
+        joint_table, per_task = result
+        return joint_table, per_task
path: mteb/leaderboard/table.py
user: login: Samoed
body: Can you add this information to comment to this if?
created_at: 2025-03-27T12:57:07Z
author_association: MEMBER
diff_hunk: @@ -231,3 +287,17 @@ def scores_to_tables(
         ),
         gr.DataFrame(per_task_style, interactive=False, pinned_columns=1),
     )
+
+
+def create_tables(
+    scores_long: list[dict], search_query: str | None = None
+) -> tuple[gr.DataFrame, gr.DataFrame]:
+    result = scores_to_tables(scores_long, search_query)
+    if len(result) == 2:
+        joint_table, per_task = result
+        return joint_table, per_task
path: mteb/leaderboard/table.py
user: login: ayush1298
body: Added this
created_at: 2025-03-27T13:09:28Z
author_association: COLLABORATOR

PR comments:
user: login: x-tabdeveloping
created_at: 2025-03-18T12:14:50Z
body: As I stated on the issue, I think this diminishes the importance of the zero-shot column visually. Can we try manipulating the text colour instead?
author_association: COLLABORATOR
user: login: ayush1298
created_at: 2025-03-18T13:18:39Z
body: > As I stated on the issue, I think this diminishes the importance of the zero-shot column visually. Can we try manipulating the text colour instead?
>
I have added updated images in description. After light green color, I think zero-shot column will have importance that we want and also no need to manipulate text color as well
author_association: COLLABORATOR
user: login: Samoed
created_at: 2025-03-19T09:15:17Z
body: Leaderboard with dark theme
![image](https://github.com/user-attachments/assets/a7312acc-4433-400c-8ac5-35891ee30620)
![image](https://github.com/user-attachments/assets/e36db3f9-aebe-4fc2-aa15-58f6abfa37ee)

author_association: MEMBER
user: login: KennethEnevoldsen
created_at: 2025-03-20T07:53:15Z
body: Oh I seem to have missed this, sorry for the late reply.

> As I stated on the issue, I think this diminishes the importance of the zero-shot column visually. Can we try manipulating the text colour instead?

At least in light mode it think it is fine.

Is it possible to make the color go from transparent to green? (it would be less aggressive in dark mode?)
author_association: CONTRIBUTOR
user: login: ayush1298
created_at: 2025-03-21T10:02:39Z
body: > Is it possible to make the color go from transparent to green? (it would be less aggressive in dark mode?
>
@KennethEnevoldsen The color range is starting from white, so I don't think we can do anything other than that. 
![image](https://github.com/user-attachments/assets/c6006f48-b39b-40ff-bc5b-4a31af308e64)

author_association: COLLABORATOR
user: login: KennethEnevoldsen
created_at: 2025-03-23T13:02:12Z
body: Hmm that is a bit annoying that makes it notably less subtle - will just ask for a second opinion from @Muennighoff 
author_association: CONTRIBUTOR
user: login: Muennighoff
created_at: 2025-03-23T13:26:35Z
body: Hmm no strong opinion here, whatever you think looks best!
author_association: CONTRIBUTOR
user: login: ayush1298
created_at: 2025-03-26T13:16:13Z
body: @KennethEnevoldsen , can you review this one?

author_association: COLLABORATOR
user: login: ayush1298
created_at: 2025-03-27T13:21:59Z
body: @Samoed , Can you once again run the failed check. Its again failed at same sentence transformer issue
author_association: COLLABORATOR
user: login: ayush1298
created_at: 2025-03-29T10:52:05Z
body: Can we merge these one? @KennethEnevoldsen @Samoed 
author_association: COLLABORATOR