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'ensembleTEAMNAMEAGEPOS
--PositionSLOTTED_BONUSSIGNED_BONUSCe 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