Je voudrais produire un diagramme de dispersion de pandas DataFrame avec des étiquettes de ligne et de colonne catégoriques en utilisant matplotlib
. Un exemple de DataFrame ressemble à ceci:Scatter traçant des pandas DataFrame avec des lignes/colonnes catégoriquement étiquetées
import pandas as pd
df = pd.DataFrame({"a": [1,2], "b": [3,4]}, index=["c","d"])
# a b
#c 1 2
#d 3 4
La taille du marqueur est la fonction des valeurs DataFrame respectives. Jusqu'à présent, je suis venu avec une solution maladroite qui énumère essentiellement les lignes et les colonnes, trace les données, et reconstitue alors les étiquettes:
flat = df.reset_index(drop=True).T.reset_index(drop=True).T.stack().reset_index()
# level_0 level_1 0
#0 0 0 1
#1 0 1 2
#2 1 0 3
#3 1 1 4
flat.plot(kind='scatter', x='level_0', y='level_1', s=100*flat[0])
plt.xticks(range(df.shape[1]), df.columns)
plt.yticks(range(df.shape[0]), df.index)
plt.show()
Quel genre d'œuvres. Maintenant, question: existe-t-il une manière plus intuitive et plus intégrée de produire ce diagramme de dispersion, idéalement sans diviser les données et les métadonnées?
Je ne pense pas que nous pouvons utiliser des données non numériques pour le traçage. Je vous dirai que vous devrez régler séparément les ticks ... – MaxU
Je suppose que la question se traduit par * "Pourquoi aucune bibliothèque n'a-t-elle encore implémenté ma fonction de souhait de traçage personnalisé?" *. – ImportanceOfBeingErnest