Spaces:
Runtime error
Runtime error
import plotly.graph_objects as go | |
from plotly.subplots import make_subplots | |
def create_charts(results): | |
charts = {} | |
explanations = {} | |
# Loop through each detected speaker in the results | |
for speaker_id, speaker_data in results['speakers'].items(): | |
speaker_charts = {} | |
speaker_explanations = {} | |
# Attachment Styles for each speaker | |
attachment_data = speaker_data['attachments'] | |
fig_attachment = go.Figure(go.Bar( | |
x=['Secured', 'Anxious-Preoccupied', 'Dismissive-Avoidant', 'Fearful-Avoidant'], | |
y=[attachment_data.secured, attachment_data.anxious_preoccupied, | |
attachment_data.dismissive_avoidant, attachment_data.fearful_avoidant], | |
marker_color=['blue', 'orange', 'green', 'red'] | |
)) | |
fig_attachment.update_layout(title_text=f"Attachment Styles - Speaker {speaker_id}", showlegend=False) | |
speaker_charts["attachment"] = fig_attachment | |
speaker_explanations["attachment"] = attachment_data.explanation | |
# Attachment Dimensions (Radar Chart) for each speaker | |
fig_dimensions = go.Figure(go.Scatterpolar( | |
r=[attachment_data.avoidance, attachment_data.anxiety, attachment_data.self_rating, attachment_data.others_rating], | |
theta=['Avoidance', 'Anxiety', 'Self', 'Others'], | |
fill='toself' | |
)) | |
fig_dimensions.update_layout(title_text=f"Attachment Dimensions - Speaker {speaker_id}", showlegend=False) | |
speaker_charts["dimensions"] = fig_dimensions | |
# Big Five Traits for each speaker | |
bigfive_data = speaker_data['bigfive'] | |
fig_bigfive = go.Figure(go.Bar( | |
x=['Extraversion', 'Agreeableness', 'Conscientiousness', 'Neuroticism', 'Openness'], | |
y=[bigfive_data.extraversion, bigfive_data.agreeableness, | |
bigfive_data.conscientiousness, bigfive_data.neuroticism, bigfive_data.openness], | |
marker_color=['blue', 'green', 'red', 'purple', 'orange'] | |
)) | |
fig_bigfive.update_layout(title_text=f"Big Five Traits - Speaker {speaker_id}", showlegend=False) | |
speaker_charts["bigfive"] = fig_bigfive | |
speaker_explanations["bigfive"] = bigfive_data.explanation | |
# Personality Disorders for each speaker | |
personality_data = speaker_data['personalities'] | |
fig_personality = go.Figure(go.Bar( | |
x=['Antisocial', 'Narcissistic', 'Depressed', 'Anxious-Avoidant', | |
'Obsessive', 'Paranoid', 'Borderline', 'Dependent', 'Schizoid-Schizotypal'], | |
y=[personality_data.antisocial_psychopathic, personality_data.narcissistic, | |
personality_data.depressed, personality_data.anxious_avoidant, | |
personality_data.obsessional, personality_data.paranoid, | |
personality_data.borderline_dysregulated, personality_data.dependent_victimized, | |
personality_data.schizoid_schizotypal], | |
marker_color=['black', 'orange', 'gray', 'green', 'brown', 'purple', 'red', 'cyan', 'magenta'] | |
)) | |
fig_personality.update_layout(title_text=f"Personality Disorders - Speaker {speaker_id}", showlegend=False) | |
speaker_charts["personality"] = fig_personality | |
speaker_explanations["personality"] = personality_data.explanation | |
# Update all charts to take full width | |
for fig in speaker_charts.values(): | |
fig.update_layout(height=400, width=None, margin=dict(l=50, r=50, t=100, b=50)) | |
# Store the charts and explanations for each speaker | |
charts[speaker_id] = speaker_charts | |
explanations[speaker_id] = speaker_explanations | |
return charts, explanations | |