J’aimerais utiliser la fonction « st.multiselect() » à la place de « st.selectbox() » dans ce code sauf que ça ne marche pas et j’aimerais avoir de l’aide SVP.
if radio == « Statistiques Exploratoires »:
equipe_1 = st.selectbox("EQUIPE A DOMICILE", df['home_team'].unique())
equipe_2 = st.selectbox("EQUIPE A L'EXTERIEUR",df['away_team'].unique())
st.subheader("ATTAQUE")
with st.container():
col1, col2 = st.columns(2)
with col1:
fig1 = px.histogram(df[df['home_team']==equipe_1], x='season', y='home_shots_on_target', histfunc='avg',
height=300,
title='Home Shots On Target')
st.plotly_chart(fig1)
with col2 :
fig2 = px.histogram(df[df['away_team'] == equipe_2], x='season', y='away_shots_on_target', histfunc='avg',
height=300,
title='Away Shots On Target')
st.plotly_chart(fig2)
Bonjour Iheb,
Pouvez vous nous donner plus de précisions sur ce qui ne marche pas ? Est ce simplement que le Streamlit renvoie une erreur (et donc ajouter le message d’erreur) ou est-ce que cela affiche bien des figures mais pas comme vous l’entendiez ?
J’ai repris et adapté votre code et il semble bien fonctionner :
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
#Loading data
df = pd.read_csv("results.csv")
st.sidebar.title("Sidebar")
pages = ["Statistiques Exploratoires","Project Presentation","Data Viz","Modeling Match","Modeling Group Stage","Modeling the whole Tournament"]
page = st.sidebar.radio("Choose a page",options =pages)
if page == pages[0]:
equipe_1 = st.selectbox("EQUIPE A DOMICILE", df['home_team'].unique())
equipe_2 = st.selectbox("EQUIPE A L'EXTERIEUR",df['away_team'].unique())
st.subheader("ATTAQUE")
with st.container():
col1, col2 = st.columns(2)
with col1:
fig1 = px.histogram(df[df['home_team']==equipe_1], x='tournament', y='home_score', histfunc='avg',
height=300,
title='Home Shots On Target')
st.plotly_chart(fig1)
with col2 :
fig2 = px.histogram(df[df['away_team'] == equipe_2], x='tournament', y='away_score', histfunc='avg',
height=300,
title='Away Shots On Target')
st.plotly_chart(fig2)
Le code que je vous ai envoyé fonctionne. Sauf qu’il ne fonctionne pas quand je veux faire un « multiselect » à la place de « selectbox » ; ça m’affiche une erreur sur les tailles.
Au fait , je veux pouvoir mettre deux équipes ou plus dans un même graphe pour comparer les statistiques en passant par le « multiselect »
Merci Robin , je l’ai fais fonctionné . L’astuce était dans la fonction « isin() » ; juste pour savoir , on met « isin » parce qu’on peut sélectionner plusieurs équipes et non plus une n’est ce pas ?
sinon pour que les équipes n’aient pas les mêmes couleurs , comment faire ? y’a t’il un attribut « color » ou quelque chose du genre ? je vais chercher de mon côté mais c’est mieux de faire une couleur par équipe.
.isin() est l’équivalent du test d’égalité pour plusieurs valeurs, on va sélectionner seulement les lignes dont les valeurs sont contenues dans une liste (ici l’ensemble des équipes choisies par l’utilisateur).
Pour afficher plusieurs couleurs, il faut bien utiliser l’argument color
season = st.selectbox("Season", df['season'].unique())
fig = px.histogram(classement[classement['season'] == season].sort_values('points',ascending=False), x='home_team', y='points',
height=300,
title='Number of Points',
color="season",
color_discrete_map={"Arsenal": "blue"},
barmode='group')
st.plotly_chart(fig)
je veux changer la couleur d’Arsenal , ceci est possible si je mets dans l’argument « color » : « home_team » sauf que si je le fais , cela ne me donnerait pas la figure que je veux.
Du coup , n’y’aurait il pas une astuce pour contourner le problème.