import json
import streamlit as st
import pandas as pd
import seaborn as sns
# Function to load data from JSON file
def load_data(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
data = json.load(file)
return pd.DataFrame(data)
# Function to style the DataFrame
def style_dataframe(df: pd.DataFrame):
df['Wyniki'] = df.apply(lambda row: [row['Analiza wydźwięku'], row['Zrozumienie tekstu'], row['Znajomość związków frazeologicznych']], axis=1)
# Insert the new column after the 'Średnia' column
cols = list(df.columns)
cols.insert(cols.index('Średnia') + 1, cols.pop(cols.index('Wyniki')))
df = df[cols]
# Create a color ramp using Seaborn
return df
def styler(df: pd.DataFrame):
palette = sns.color_palette("RdYlGn", as_cmap=True)
styled_df = df.style.background_gradient(cmap=palette, subset=["Średnia", "Analiza wydźwięku", "Znajomość związków frazeologicznych", "Zrozumienie tekstu"]).format(precision=2)
return styled_df
# Load data from JSON file
data = load_data('data.json')
# Streamlit app
st.set_page_config(layout="wide")
st.markdown("""
""", unsafe_allow_html=True)
# Add logo, title, and subheader in a flexible container with equal spacing
st.markdown("""
""", unsafe_allow_html=True)
# Create tabs
tab1, tab2 = st.tabs(["Wyniki", "Opis"])
with tab1:
st.write("Poniżej znajduje się tabela przedstawiająca wyniki benchmarku dla różnych modeli LLM.")
# Display the styled DataFrame
styled_df_show = style_dataframe(data)
styled_df_show = styler(styled_df_show)
# st.dataframe(styled_df_show)
st.data_editor(styled_df_show, column_config={
'Średnia': st.column_config.NumberColumn('Średnia'),
'Wyniki': st.column_config.BarChartColumn(
"Wyniki", help="Zestawienie wyników poszczególnych zadań",
y_min=0,y_max=5,),
'Analiza wydźwięku': st.column_config.NumberColumn('Wydźwięk', help='Umiejętność analizy wydźwięku'),
'Znajomość związków frazeologicznych': st.column_config.NumberColumn('Frazeologizmy', help='Znajomość związków frazeologicznych'),
'Zrozumienie tekstu': st.column_config.NumberColumn('Zrozumienie tekstu', help='Umiejętność zrozumienia tekstu'),
},hide_index=True, disabled=True)
with tab2:
st.header("Opis")
st.write("Tutaj znajduje się trochę tekstu jako wypełniacz.")
st.write("To jest przykładowy tekst, który może zawierać dodatkowe informacje o benchmarku, metodologii, itp.")
# Run the app with `streamlit run your_script.py`