Créer des graphiques de prix d'actions personnalisés

PythonPythonBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous allez apprendre à créer un graphique de plusieurs séries temporelles qui démontre le style personnalisé du cadre du tracé, des lignes d'échelle, des étiquettes d'échelle et des propriétés du graphique en ligne à l'aide de Matplotlib. Le graphique affichera les cours des actions de diverses entreprises sur une période de 32 ans.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder au carnet Jupyter pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.

Importez les bibliothèques nécessaires

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.cbook import get_sample_data
import matplotlib.transforms as mtransforms

Chargez les données sur les actions

with get_sample_data('Stocks.csv') as file:
    stock_data = np.genfromtxt(
        file, delimiter=',', names=True, dtype=None,
        converters={0: lambda x: np.datetime64(x, 'D')}, skip_header=1)

Créez un objet figure et un objet axe

fig, ax = plt.subplots(1, 1, figsize=(6, 8), layout='constrained')

Définissez les couleurs à utiliser dans le tracé

ax.set_prop_cycle(color=[
    '#1f77b4', '#aec7e8', '#ff7f0e', '#ffbb78', '#2ca02c', '#98df8a',
    '#d62728', '#ff9896', '#9467bd', '#c5b0d5', '#8c564b', '#c49c94',
    '#e377c2', '#f7b6d2', '#7f7f7f', '#c7c7c7', '#bcbd22', '#dbdb8d',
    '#17becf', '#9edae5'])

Définissez les noms et les symboles boursiers des actions à tracer

stocks_name = ['IBM', 'Apple', 'Microsoft', 'Xerox', 'Amazon', 'Dell',
               'Alphabet', 'Adobe', 'S&P 500', 'NASDAQ']
stocks_ticker = ['IBM', 'AAPL', 'MSFT', 'XRX', 'AMZN', 'DELL', 'GOOGL',
                 'ADBE', 'GSPC', 'IXIC']

Ajustez manuellement les positions des étiquettes verticalement pour éviter les chevauchements

y_offsets = {k: 0 for k in stocks_ticker}
y_offsets['IBM'] = 5
y_offsets['AAPL'] = -5
y_offsets['AMZN'] = -6

Tracez chaque action séparément avec sa propre couleur

for nn, column in enumerate(stocks_ticker):
    ## Tracez chaque ligne séparément avec sa propre couleur.
    ## Ne pas inclure de données avec des valeurs NaN.
    good = np.nonzero(np.isfinite(stock_data[column]))
    line, = ax.plot(stock_data['Date'][good], stock_data[column][good], lw=2.5)

    ## Ajoutez une étiquette de texte à l'extrémité droite de chaque ligne. La plupart du code ci-dessous
    ## consiste à ajouter des décalages de position verticale car certaines étiquettes se chevauchaient.
    y_pos = stock_data[column][-1]

    ## Utilisez une transformation de décalage, en points, pour tout texte qui doit être déplacé
    ## vers le haut ou le bas.
    offset = y_offsets[column] / 72
    trans = mtransforms.ScaledTranslation(0, offset, fig.dpi_scale_trans)
    trans = ax.transData + trans

    ## Encore une fois, assurez-vous que toutes les étiquettes sont suffisamment grandes pour être aisément lues
    ## par le spectateur.
    ax.text(np.datetime64('2022-10-01'), y_pos, stocks_name[nn],
            color=line.get_color(), transform=trans)

Définissez les limites de l'axe des x et de l'axe des y, et ajoutez un titre et une grille

ax.set_xlim(np.datetime64('1989-06-01'), np.datetime64('2023-01-01'))
fig.suptitle("Technology company stocks prices dollars (1990-2022)", ha="center")
ax.spines[:].set_visible(False)
ax.xaxis.tick_bottom()
ax.yaxis.tick_left()
ax.set_yscale('log')
ax.grid(True,'major', 'both', ls='--', lw=.5, c='k', alpha=.3)
ax.tick_params(axis='both', which='both', labelsize='large',
               bottom=False, top=False, labelbottom=True,
               left=False, right=False, labelleft=True)

Affichez le graphique

plt.show()

Sommaire

Dans ce laboratoire, vous avez appris à créer un graphique de plusieurs séries temporelles qui démontre le style personnalisé du cadre du tracé, des lignes d'échelle, des étiquettes d'échelle et des propriétés du graphique en ligne à l'aide de Matplotlib. Vous avez également appris à tracer chaque action séparément avec sa propre couleur, à définir les limites de l'axe des x et de l'axe des y, et à ajouter un titre et une grille.