Εδώ ο άξονας x είναι τα έσοδα, ο άξονας y το περιθώριο και το μέγεθος της φούσκας δείχνει πόσους πελάτες έχει κάθε τμήμα, ώστε να προβάλλονται τρεις μεταβλητές ταυτόχρονα.
import numpy as np
import matplotlib.pyplot as plt
segments = ["Enterprise", "SMB", "Startup", "Consumer", "Partner"]
revenue = np.array([320, 180, 90, 70, 150])
margin = np.array([28, 22, 15, 12, 20])
customers = np.array([45, 110, 260, 520, 160])
fig, ax = plt.subplots(figsize=(6, 4))
scatter = ax.scatter(
revenue,
margin,
s=customers,
c=margin,
cmap="Blues",
alpha=0.7,
edgecolors="#1f2937",
)
for x, y, label in zip(revenue, margin, segments):
ax.text(x, y, label, fontsize=10, ha="center", va="center")
ax.set_xlabel("Έσοδα (εκατ. γιεν)")
ax.set_ylabel("Περιθώριο κέρδους (%)")
ax.set_title("Έσοδα, περιθώριο και πελάτες ανά τμήμα")
ax.grid(alpha=0.3)
cbar = fig.colorbar(scatter, ax=ax)
cbar.set_label("Περιθώριο κέρδους (%)")
fig.tight_layout()
plt.show()

Σημεία προσοχής #
- Κλιμακώστε το μέγεθος βάσει της επιφάνειας της φούσκας, ώστε η σύγκριση να αντικατοπτρίζει τον πραγματικό όγκο.
- Όταν οι φούσκες επικαλύπτονται, μετακινήστε ελαφρά τις ετικέτες ή αυξήστε την διαφάνεια.
- Η τοποθέτηση της ετικέτας στο κέντρο κάθε φούσκας βοηθά να αποφύγετε πρόσθετο υπόμνημα.