Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
2.5 kB
2
Indexable
Never
import matplotlib.pyplot as plt
import numpy as np

# Sample data
labels = ['Extraversion', 'Introversion', 'Openness', 'Neuroticism', 'Agreeableness', 'Conscientiousness']

# Reasons for listening to music (averaged ratings for each personality type)
mood_enhancement = [5, 3, 4, 2, 4, 3]
emotional_regulation = [2, 4, 3, 5, 3, 3]
social_bonding = [5, 2, 2, 1, 4, 2]
intellectual_stimulation = [1, 5, 5, 2, 3, 3]
background_music = [3, 4, 2, 3, 5, 5]

# Preferred genres (as percentages for each personality type)
preferred_genres = {
    'Pop': [30, 10, 5, 15, 10, 40],
    'Classical': [5, 25, 10, 0, 10, 10],
    'Jazz': [5, 10, 30, 5, 5, 10],
    'Hip-hop': [20, 5, 5, 15, 10, 0],
    'EDM': [20, 5, 5, 10, 5, 0],
    'Metal': [10, 0, 0, 30, 0, 0],
    'Folk': [5, 10, 10, 5, 20, 5],
    'Rock': [5, 10, 10, 15, 10, 20]
}

# Live vs Recorded music preference (averaged ratings)
live_music_preference = [5, 2, 4, 3, 3, 2]
recorded_music_preference = [3, 5, 4, 5, 4, 5]

# Creating bar chart for reasons for listening to music
fig, axs = plt.subplots(3, 1, figsize=(10, 18))

# Bar chart 1: Reasons for listening to music
x = np.arange(len(labels))  # the label locations
width = 0.15  # the width of the bars

axs[0].bar(x - 2*width, mood_enhancement, width, label='Mood Enhancement')
axs[0].bar(x - width, emotional_regulation, width, label='Emotional Regulation')
axs[0].bar(x, social_bonding, width, label='Social Bonding')
axs[0].bar(x + width, intellectual_stimulation, width, label='Intellectual Stimulation')
axs[0].bar(x + 2*width, background_music, width, label='Background Music')

axs[0].set_ylabel('Average Rating')
axs[0].set_title('Reasons for Listening to Music by Personality Type')
axs[0].set_xticks(x)
axs[0].set_xticklabels(labels)
axs[0].legend()

# Pie chart 2: Preferred genres
axs[1].set_title('Preferred Genres by Personality Type')
genre_slices = [sum(preferred_genres[genre]) for genre in preferred_genres]
axs[1].pie(genre_slices, labels=preferred_genres.keys(), autopct='%1.1f%%', startangle=90)

# Bar chart 3: Live vs Recorded Music Preference
axs[2].bar(x - width/2, live_music_preference, width, label='Live Music')
axs[2].bar(x + width/2, recorded_music_preference, width, label='Recorded Music')

axs[2].set_ylabel('Average Rating')
axs[2].set_title('Live vs. Recorded Music Preference by Personality Type')
axs[2].set_xticks(x)
axs[2].set_xticklabels(labels)
axs[2].legend()

plt.tight_layout()
plt.show()
Leave a Comment