Spaces:
Sleeping
Sleeping
import plotly.express as px | |
import pandas as pd | |
import json | |
import plotly.graph_objects as go | |
import streamlit as st | |
with open('/Users/zsapey/Documents/Code/libe-datalab/Sciences-POC/output_favarel_et_al.txt', 'r') as f : | |
out_dict = json.loads(f.read()) | |
def initialize(): | |
articles = pd.read_csv('/Users/zsapey/Documents/Code/libe-datalab/Sciences-POC/extract_sciences_po.csv') | |
with open('/Users/zsapey/Documents/Code/libe-datalab/Sciences-POC/output_favarel_et_al.txt', 'r') as f : | |
out_dict = json.loads(f.read()) | |
df = pd.DataFrame.from_dict(out_dict) | |
articles = pd.merge(df, articles, on='item_id', how='left') | |
count_principale = df.groupby('categorie_principale').item_id.count() | |
count_secondaire = df.groupby('categorie_secondaire').item_id.count() | |
display_principale = count_principale.reset_index() | |
display_principale.columns = ['Catégorie', 'Nombre d\'articles'] | |
display_secondaire = count_secondaire.reset_index() | |
display_secondaire.columns = ['Catégorie', 'Nombre d\'articles'] | |
template ="ggplot2" | |
fig = go.Figure() | |
fig.update_layout(template=template, | |
) | |
fig.add_trace(go.Scatterpolar( | |
r=display_principale['Nombre d\'articles'], | |
theta=display_principale['Catégorie'], | |
fill='toself', | |
name='Catégorie Principale', | |
marker = {'color' : 'red'}, | |
)) | |
fig.add_trace(go.Scatterpolar( | |
r=display_secondaire['Nombre d\'articles'], | |
theta=display_secondaire['Catégorie'], | |
fill='toself', | |
name='Catégorie Secondaire', | |
marker = {'color' : 'blue'}, | |
opacity=0.3, | |
)) | |
fig.update_layout( | |
polar=dict( | |
radialaxis=dict( | |
visible=True, | |
range=[0, max(max(display_principale['Nombre d\'articles']), max(display_secondaire['Nombre d\'articles']))] | |
)), | |
showlegend=True | |
) | |
fig.update_layout(legend=dict( | |
yanchor="top", | |
y=0.0001, | |
xanchor="left", | |
x=0.395 | |
)) | |
return fig, display_principale, articles | |
def display_article(article): | |
url = article['url'] | |
colImage, colText = st.columns(2) | |
# try : | |
with colImage : | |
st.image(article["image_url"]) # image URL | |
with colText: | |
if 'subhead' in article.index and article['subhead']!='nan': | |
st.subheader(f":red[{article['subhead']}] [{article['titre'].rstrip('Libération').rstrip('-')[:-2]}]({url})") # Title | |
else : | |
# st.toast(article.index) | |
titre_cleaned = article['titre'].removesuffix('Libération').rstrip('-').strip() | |
st.subheader(f"[{titre_cleaned}]({url})") # Title | |
st.write(f"{article['description']}") # Header | |
formatted_date = article["date_published"] | |
if article.premium: | |
st.markdown( | |
f""" | |
<span style='color:grey'>{formatted_date+" "} </span> <span style='color:#eeb54e'> abonnés</span> | |
""", | |
unsafe_allow_html=True | |
) | |
else : | |
st.markdown( | |
f""" | |
<span style='color:grey'>{formatted_date+" "} </span> | |
""", | |
unsafe_allow_html=True | |
) | |
# except : | |
# st.toast(f'Error displaying article {article.item_id}') | |
# return | |
fig, display_principale, articles = initialize() | |
# col1, col2, col3 = st.columns([0.5, 0.2, 0.3]) | |
st.subheader('Répartition des articles par catégorie') | |
# with col1: | |
col1, col2 = st.columns([0.6, 0.4], vertical_alignment='center') | |
with col1: | |
st.plotly_chart(fig) | |
with col2: | |
st.dataframe(display_principale.set_index('Catégorie').sort_values(by='Nombre d\'articles', ascending=False)) | |
st.subheader('Exemples d\'articles') | |
tabs = st.tabs(display_principale['Catégorie'].values.tolist()) | |
with tabs[0]: | |
cat = display_principale['Catégorie'][0] | |
for i, article in articles.loc[articles.categorie_principale==cat].iterrows(): | |
display_article(article) | |
with tabs[1]: | |
cat = display_principale['Catégorie'][1] | |
for i, article in articles.loc[articles.categorie_principale==cat].iterrows(): | |
display_article(article) | |
with tabs[2]: | |
cat = display_principale['Catégorie'][2] | |
for i, article in articles.loc[articles.categorie_principale==cat].iterrows(): | |
display_article(article) | |
with tabs[3]: | |
cat = display_principale['Catégorie'][3] | |
for i, article in articles.loc[articles.categorie_principale==cat].iterrows(): | |
display_article(article) | |
with tabs[4]: | |
cat = display_principale['Catégorie'][4] | |
for i, article in articles.loc[articles.categorie_principale==cat].iterrows(): | |
display_article(article) | |
with tabs[5]: | |
cat = display_principale['Catégorie'][5] | |
for i, article in articles.loc[articles.categorie_principale==cat].iterrows(): | |
display_article(article) | |