File size: 3,743 Bytes
5251bf1
 
9cec98e
e3551a8
 
 
9fda8e0
620c398
5251bf1
 
 
9fda8e0
 
 
1a7e4a0
70ae5c9
5251bf1
 
 
 
 
 
 
 
 
 
 
 
 
70ae5c9
5251bf1
 
 
 
 
 
 
 
 
 
 
70ae5c9
5251bf1
 
 
 
 
 
 
 
 
 
 
 
 
 
07990a2
5251bf1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9fda8e0
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
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