Voici une petite histoire pour écrire des graphiques multilignes avec Plotly Express
, un wrapper pour la bibliothèque de graphes Python Plotly
, dont le design moderne est irrésistible.
J'ai extrait les données du draft MLB 2019 du site appelé Spotrac. Je vais omettre les étapes de grattage et de traitement, mais les données ressemblent à ceci.
>>> df.head()
PICK TEAM NAME AGE POS SCHOOL SLOTTED_BONUS SIGNED_BONUS
0 1.0 BAL Adley Rutschman 21 C Oregon State 8415300.0 8100000.0
1 2.0 KC Bobby Witt Jr. 18 SS Colleyville Heritage HS 7789900.0 7789900.0
2 3.0 CHW Andrew Vaughn 21 1B California 7221200.0 7221200.0
3 4.0 MIA J.J. Bleday 21 OF Vanderbilt 6664000.0 6670000.0
4 5.0 DET Riley Greene 18 OF Hagerty HS 6180700.0 6180700.0
>>> df.dtypes
PICK float64
TEAM object
NAME object
AGE object
POS object
SCHOOL object
SLOTTED_BONUS float64
SIGNED_BONUS float64
dtype: object
La signification de la colonne de «DataFrame» est la suivante. C'est un otaku de la MLB, alors j'espère que vous pourrez le vérifier: arc:
PICK
―― L'ordre du numéro de projet dans l'ensembleTEAM
NAME
AGE
POS
--PositionSLOTTED_BONUS
SIGNED_BONUS
Ce que je veux faire, c'est chevaucher les lignes de pliage avec SLOTTED_BONUS
et SIGNED_BONUS
, et quel est le montant réel de la signature pour le montant de l'emplacement? Je veux visualiser.
En prenant la peine de créer des Tidy Data avec pandas.melt ()
, vous pouvez l'écrire rapidement en alimentant les données dans Plotly Express
.
>>> mdf = pd.melt(
... df,
... id_vars=["PICK", "TEAM", "NAME", "AGE", "POS", "SCHOOL"],
... value_vars=["SLOTTED_BONUS", "SIGNED_BONUS"],
... var_name="BONUS_TYPE",
... value_name="AMOUNT"
... )
>>> mdf.head()
PICK TEAM NAME AGE POS SCHOOL BONUS_TYPE AMOUNT
0 1.0 BAL Adley Rutschman 21 C Oregon State SLOTTED_BONUS 8415300.0
1 2.0 KC Bobby Witt Jr. 18 SS Colleyville Heritage HS SLOTTED_BONUS 7789900.0
2 3.0 CHW Andrew Vaughn 21 1B California SLOTTED_BONUS 7221200.0
3 4.0 MIA J.J. Bleday 21 OF Vanderbilt SLOTTED_BONUS 6664000.0
4 5.0 DET Riley Greene 18 OF Hagerty HS SLOTTED_BONUS 6180700.0
J'ai modifié SLOTTED_BONUS
et SIGNED_BONUS
pour les tenir verticalement, et les ai mis dans la colonne appelée BONUS_TYPE
comme colonne qui contient le nom de la colonne d'origine et la valeur comme ʻAMOUNT. Dans ce formulaire, vous pouvez écrire un tracé multiligne en définissant pour voir
BONUS_TYPE comme paramètre à passer à
Plotly Express`.
import plotly.express as px
px.line(
mdf, x="PICK", y="AMOUNT", color="BONUS_TYPE",
)
Recommended Posts