Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
1.7 kB
1
Indexable
Never
import matplotlib.pyplot as plt

# Create the figure and axis for the fishbone diagram
fig, ax = plt.subplots(figsize=(10, 7))

# Main spine of the fishbone diagram
ax.plot([0, 1], [0.5, 0.5], 'k-', lw=2)

# Define the problem at the head of the fishbone
ax.text(1, 0.5, 'Spotify Growth Challenges', fontsize=14, verticalalignment='center')

# Categories (bones)
categories = {
    'Pricing': ['Successful price increases in mature markets', 'Challenges in free to paid conversion in developing markets'],
    'Promotion': ['ROI issues in developing markets', 'Ineffective MAU growth in some regions'],
    'Product': ['Expansion of audiobooks & podcasts enhanced value', 'Free-tier ad revenue volatility'],
    'Market': ['High ROI in developed markets', 'Lower engagement in developing markets'],
    'Monetization': ['Slow conversion in developing markets', 'Ad revenue growth slower than expected'],
    'Engagement': ['Strong engagement in mature markets', 'Inconsistent engagement in developing markets']
}

# Plot each category as bones coming off the main spine
y_positions = [0.8, 0.7, 0.6, 0.5, 0.4, 0.3]
for i, (category, causes) in enumerate(categories.items()):
    ax.plot([0, 0.5], [0.5, y_positions[i]], 'k-', lw=2)
    ax.text(-0.1, y_positions[i], category, fontsize=12, verticalalignment='center', horizontalalignment='right')

    # Plot the causes on each bone
    for j, cause in enumerate(causes):
        ax.text(0.25, y_positions[i] - 0.05 * (j+1), f'- {cause}', fontsize=10, verticalalignment='center')

# Remove axes for a cleaner look
ax.set_axis_off()

# Display the diagram
plt.title('Fishbone Diagram: Spotify Growth Challenges', fontsize=16)
plt.show()
Leave a Comment