Spaces:
Sleeping
Sleeping
File size: 3,980 Bytes
9392036 913507e 7dae805 5be3cef 1280fd8 6071181 9392036 1280fd8 9392036 2ee3fae 9392036 1280fd8 913507e 6071181 574aa10 7dae805 574aa10 7dae805 9392036 574aa10 7dae805 2ee3fae 7dae805 6071181 574aa10 6071181 574aa10 6071181 574aa10 6071181 3f42d49 6071181 574aa10 6071181 574aa10 6071181 574aa10 6071181 574aa10 6071181 574aa10 6071181 574aa10 6071181 574aa10 6071181 574aa10 6071181 574aa10 6071181 574aa10 9392036 6071181 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
import streamlit as st
import pandas as pd
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource
from bokeh.palettes import Category10
TOOLTIPS = """
<div>
<div>
<img src="@img{safe}" style="width:128px; height:auto; float: left; margin: 0px 15px 15px 0px;" alt="@img" border="2"></img>
</div>
<div>
<span style="font-size: 17px; font-weight: bold;">@label</span>
</div>
</div>
"""
def render_plot(selected_labels, df, plot_placeholder):
if not selected_labels:
st.write("No data to display. Please select at least one subset.")
return
filtered_data = df[df['label'].isin(selected_labels)]
p = figure(width=400, height=400, tooltips=TOOLTIPS)
num_labels = len(selected_labels)
# Ajuste de la paleta
if num_labels < 3:
palette = Category10[3][:num_labels]
elif num_labels in [3, 4, 5, 6, 7, 8, 9, 10]:
palette = Category10[num_labels]
else:
palette = Category10[10][:num_labels]
# Graficar cada label por separado
for label, color in zip(selected_labels, palette):
subset = filtered_data[filtered_data['label'] == label]
source = ColumnDataSource(data=dict(
x=subset['x'],
y=subset['y'],
label=subset['label'],
img=subset['img']
))
p.scatter('x', 'y', size=12, source=source, color=color, legend_label=label)
p.legend.title = "Subsets"
p.legend.location = "top_right"
p.legend.click_policy = "hide"
plot_placeholder.bokeh_chart(p)
def render_plot_donut(selected_labels):
render_plot(selected_labels, df, plot_placeholder)
def render_plot_idefics2(selected_labels):
render_plot(selected_labels, df2, plot_placeholder2)
def config_style():
st.markdown(
"""
<style>
.main-title {
font-size: 50px;
color: #4CAF50;
text-align: center;
}
.sub-title {
font-size: 30px;
color: #555;
}
.custom-text {
font-size: 18px;
line-height: 1.5;
}
</style>
""",
unsafe_allow_html=True
)
st.markdown('<h1 class="main-title">Merit Secret Embeddings 🎒📃🏆</h1>', unsafe_allow_html=True)
st.markdown('<h2 class="sub-title">Donut</h2>', unsafe_allow_html=True)
st.markdown(
"""
<p class="custom-text">
Explore how Donut perceives real data.
</p>
""",
unsafe_allow_html=True
)
if __name__ == "__main__":
config_style()
# --- Primer gráfico: datos de data.csv ---
df = pd.read_csv("data/data_donut_pca.csv")
unique_labels = df['label'].unique().tolist()
# Contenedor para el primer gráfico
plot_placeholder = st.empty()
# Mostrar inicialmente el primer gráfico con todas las etiquetas
render_plot_donut(unique_labels)
# Desplegable (multiselect) para el primer gráfico
selected_labels = st.multiselect(
"",
options=unique_labels,
default=unique_labels
)
# Actualizar gráfico al cambiar la selección
render_plot_donut(selected_labels)
# --- Segundo gráfico: datos de data_idefics2.csv ---
st.markdown('<h2 class="sub-title">Idefics2</h2>', unsafe_allow_html=True)
df2 = pd.read_csv("data/data_donut_tnse.csv")
unique_labels2 = df2['label'].unique().tolist()
# Contenedor para el segundo gráfico
plot_placeholder2 = st.empty()
# Mostrar inicialmente el segundo gráfico con todas las etiquetas
render_plot_idefics2(unique_labels2)
# Desplegable (multiselect) para el segundo gráfico
selected_labels2 = st.multiselect(
"",
options=unique_labels2,
default=unique_labels2,
key="idefics2"
)
# Actualizar el gráfico del segundo conjunto de datos al cambiar la selección
render_plot_idefics2(selected_labels2)
|