Je veux faire de matplotlib un thème sombre

Par défaut, matplotlib a un fond blanc pur comme indiqué dans l'image ci-dessous, et si vous le regardez pendant longtemps, cela vous fera mal aux yeux, donc je veux le changer en une couleur différente. J'ai entendu dire que vous pouvez utiliser la feuille de style prédéfinie, donc je vais écrire comment l'utiliser facilement.

default_sin.png

import

python


import matplotlib.pyplot as plt

Liste des feuilles de style

python


plt.style.available

Vous pouvez obtenir une liste des feuilles de style disponibles sous forme de tableau. Le contenu du tableau est le suivant.

python


['bmh',
 'classic',
 'dark_background',
 'fast',
 'fivethirtyeight',
 'ggplot',
 'grayscale',
 'seaborn-bright',
 'seaborn-colorblind',
 'seaborn-dark-palette',
 'seaborn-dark',
 'seaborn-darkgrid',
 'seaborn-deep',
 'seaborn-muted',
 'seaborn-notebook',
 'seaborn-paper',
 'seaborn-pastel',
 'seaborn-poster',
 'seaborn-talk',
 'seaborn-ticks',
 'seaborn-white',
 'seaborn-whitegrid',
 'seaborn',
 'Solarize_Light2',
 'tableau-colorblind10',
 '_classic_test']

Le noir est plus frais, donc le dark_background a l'air bien.

Appliquer le style

python


plt.style.use('dark_background')

Après avoir appliqué le style dans cette ligne en premier, tout ce que vous avez à faire est de dessiner un graphique ou d'afficher une image comme d'habitude.

Essayez de dessiner une courbe sinusoïdale

Dans un tel cas, la courbe sinusoïdale et le prix du marché sont fixes, alors dessinons-la et vérifions-la.

python


import numpy as np

x = np.linspace(0, 2*np.pi, 200)
y = np.sin(x)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y)

dark_sin.png

pense que c'est bon.

Cependant, je trouve que c'est un peu trop noir. Je suis un peu inquiet que le nom de fichier de cette image soit dark_sin.png et qu'il soit trop péché.

Feuille de style simple et personnalisée

Je n'avais pas l'intention de créer ma propre feuille de style, mais je vais jouer un peu avec.

Vous pouvez trouver le dossier contenant la feuille de style en descendant vers Lib / site-packages / matplotlib / mpl-data / stylelib / depuis le dossier python. Il y a un fichier appelé dark_background.mplstyle dedans. Ouvrez. Le contenu est le suivant.

dark_background.mplstyle


# Set black background default line colors to white.

lines.color: white
patch.edgecolor: white

text.color: white

axes.facecolor: black
axes.edgecolor: white
axes.labelcolor: white
axes.prop_cycle: cycler('color', ['8dd3c7', 'feffb3', 'bfbbd9', 'fa8174', '81b1d2', 'fdb462', 'b3de69', 'bc82bd', 'ccebc4', 'ffed6f'])

xtick.color: white
ytick.color: white

grid.color: white

figure.facecolor: black
figure.edgecolor: black

savefig.facecolor: black
savefig.edgecolor: black


Comme vous pouvez le voir, ce n'est pas si difficile, seules les couleurs sont attribuées à chaque élément. Si vous remplacez tous les «noirs» de ce fichier par un autre noir légèrement plus doux, vous obtiendrez probablement la feuille de style souhaitée. Regardez la liste des codes de couleur et sélectionnez une couleur appropriée. Il semble que 2e2e2e est juste, alors copiez ce fichier et remplacez tout noir par 2e2e2e et enregistrez-le dans le même dossier avec un nom de fichier tel que gray_background.mplstyle.

gray_background.mplstyle


# Set 2e2e2e background default line colors to white.

lines.color: white
patch.edgecolor: white

text.color: white

axes.facecolor: 2e2e2e
axes.edgecolor: white
axes.labelcolor: white
axes.prop_cycle: cycler('color', ['8dd3c7', 'feffb3', 'bfbbd9', 'fa8174', '81b1d2', 'fdb462', 'b3de69', 'bc82bd', 'ccebc4', 'ffed6f'])

xtick.color: white
ytick.color: white

grid.color: white

figure.facecolor: 2e2e2e
figure.edgecolor: 2e2e2e

savefig.facecolor: 2e2e2e
savefig.edgecolor: 2e2e2e


Appliquez votre propre style

Si vous rouvrez le shell et vérifiez avec plt.style.available, gray_background est nouvellement ajouté. Tracez la courbe sinusoïdale comme dans l'exemple.

python


import numpy as np

x = np.linspace(0, 2*np.pi, 200)
y = np.sin(x)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y)

gray_sin.png

Maintenant, c'est assez gris.

Même si vous souhaitez appliquer votre propre style comme celui-ci, en gros, si vous apportez des modifications mineures à votre goût en vous référant à la feuille de style prédéfinie, cela ne demandera pas beaucoup d'efforts.

Recommended Posts

Je veux faire de matplotlib un thème sombre
Je veux faire un jeu avec Python
[Python] Je veux faire d'une liste imbriquée un taple
Je souhaite créer manuellement une légende avec matplotlib
Je veux créer un éditeur de blog avec l'administrateur de django
Je veux faire une macro de clic avec pyautogui (désir)
Je veux faire une macro de clic avec pyautogui (Outlook)
Je veux ajouter un joli complément à input () en python
Je veux imprimer dans la notation d'inclusion
Je veux créer un environnement Python
Je veux faire un programme d'automatisation!
J'ai créé une API Web
Je veux intégrer Matplotlib dans PySimpleGUI
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
Je souhaite créer une liste de paramètres à partir du code CloudFormation (yaml)
Je souhaite créer facilement un modèle de bruit
Je veux INSÉRER un DataFrame dans MSSQL
(Matplotlib) Je veux dessiner un graphique avec une taille spécifiée en pixels
Je veux créer une fenêtre avec Python
Je souhaite afficher plusieurs images avec matplotlib.
Je ne veux pas passer un test de codage
Je veux faire des crises de ma tête
Je souhaite créer un type d'implémentation pouvant être branché
J'ai lu "Comment créer un laboratoire de piratage"
Je veux trouver facilement une délicieuse boutique
Je veux créer du code C ++ à partir de code Python!
Je veux écrire dans un fichier avec Python
J'ai créé un jeu ○ ✕ avec TensorFlow
Je souhaite créer une application Web en utilisant React et Python flask
Je souhaite télécharger une application Django sur heroku
Je veux créer un lecteur de musique et enregistrer de la musique en même temps
J'ai essayé de faire un "putain de gros convertisseur de littérature"
Je souhaite intégrer une variable dans une chaîne Python
Je veux facilement implémenter le délai d'expiration en python
Je veux répéter plusieurs fois un générateur Python
Je veux que DQN Puniki frappe un home run
100 coups sur le traitement d'image !! (021-030) Je veux faire une pause ...
Je veux donner un group_id à une trame de données pandas
Je veux générer rapidement UUID (memo memo) ~ Edition Python ~
Je veux faire la transition avec un bouton sur le ballon
Je veux escalader une montagne avec l'apprentissage par renforcement
Je veux écrire en Python! (2) Écrivons un test
Je veux trouver un package populaire sur PyPi
Je veux échantillonner au hasard un fichier avec Python
Je souhaite créer facilement un environnement de développement basé sur un modèle
Je veux travailler avec un robot en python.
Je veux diviser une chaîne de caractères avec hiragana
Je souhaite installer un package de Php Redis
Je souhaite envoyer automatiquement un e-mail de création d'entreprise
Je veux faire fonctionner un ordinateur quantique avec Python
Je veux lier une variable locale avec lambda
Je veux un générateur de mox
Je veux résoudre SUDOKU
Je veux un générateur mox (2)
[Mac] Je souhaite créer un serveur HTTP simple qui exécute CGI avec Python
Je veux démarrer un environnement Jupyter avec une seule commande
[Python] Je souhaite obtenir un ensemble commun entre numpy
Je veux démarrer beaucoup de processus à partir de python
Je veux générer automatiquement un nom de groupe de metal moderne