reab5555's picture
Update visualization.py
9fda8e0 verified
raw
history blame
3.74 kB
import plotly.graph_objs as go
from plotly.subplots import make_subplots
def create_charts(results):
charts = {}
explanations = {}
general_impressions = {}
for speaker_id, data in results.items():
charts[speaker_id] = {}
explanations[speaker_id] = {}
# Extract general impression
general_impressions[speaker_id] = data.get('general_impression', "No general impression provided.")
# Attachment Styles
attachment_data = data['attachments']
labels = ['Secured', 'Anxious-Preoccupied', 'Dismissive-Avoidant', 'Fearful-Avoidant']
values = [getattr(attachment_data, 'Secured', 0),
getattr(attachment_data, 'Anxious_Preoccupied', 0),
getattr(attachment_data, 'Dismissive_Avoidant', 0),
getattr(attachment_data, 'Fearful_Avoidant', 0)]
colors = ['blue', 'orange', 'green', 'red']
fig = go.Figure(data=[go.Bar(x=labels, y=values, marker_color=colors)])
fig.update_layout(title=f'{speaker_id}: Attachment Styles', yaxis_range=[0, 1])
charts[speaker_id]['attachment'] = fig
explanations[speaker_id]['attachment'] = attachment_data.Explanation
# Big Five Traits
bigfive_data = data['bigfive']
labels = ['Extraversion', 'Agreeableness', 'Conscientiousness', 'Neuroticism', 'Openness']
values = [bigfive_data.Extraversion, bigfive_data.Agreeableness,
bigfive_data.Conscientiousness, bigfive_data.Neuroticism, bigfive_data.Openness]
colors = ['blue', 'green', 'red', 'purple', 'orange']
fig = go.Figure(data=[go.Bar(x=labels, y=values, marker_color=colors)])
fig.update_layout(title=f'{speaker_id}: Big Five Traits', yaxis_range=[0, 10])
charts[speaker_id]['bigfive'] = fig
explanations[speaker_id]['bigfive'] = bigfive_data.Explanation
# Personality Disorders
personality_data = data['personalities']
labels = ['Antisocial', 'Narcissistic', 'Depressed', 'Anxious-Avoidant',
'Obsessive', 'Paranoid', 'Borderline', 'Dependent', 'Schizoid-Schizotypal']
values = [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]
colors = ['black', 'orange', 'gray', 'green', 'brown', 'purple', 'red', 'cyan', 'gold']
fig = go.Figure(data=[go.Bar(x=labels, y=values, marker_color=colors)])
fig.update_layout(title=f'{speaker_id}: Personality Disorders', yaxis_range=[0, 5])
charts[speaker_id]['personality'] = fig
explanations[speaker_id]['personality'] = personality_data.Explanation
# Attachment Dimensions (Radar Chart)
dimensions_data = data['attachments']
labels = ['Self', 'Others', 'Anxiety', 'Avoidance']
values = [dimensions_data.Self, dimensions_data.Others,
dimensions_data.Anxiety, dimensions_data.Avoidance]
fig = go.Figure(data=go.Scatterpolar(
r=values,
theta=labels,
fill='toself'
))
fig.update_layout(
polar=dict(
radialaxis=dict(visible=True, range=[0, 10])
),
showlegend=False,
title=f'{speaker_id}: Attachment Dimensions'
)
charts[speaker_id]['dimensions'] = fig
return charts, explanations, general_impressions