[PYTHON] Comment tracer beaucoup de légendes en changeant la couleur du graphique en continu avec matplotlib

Je veux changer la couleur avec matplotlib et afficher beaucoup de légendes

Usage

Je veux afficher beaucoup de graphiques en utilisant matplotlib, mais par défaut je ne peux obtenir qu'un nombre fini de couleurs. Je voudrais vous présenter un moyen simple de résoudre ce problème. Dans ce cas, je veux souvent afficher beaucoup de légendes, ce qui était difficile avec l'ancien matplotlib, mais maintenant c'est très facile à faire, alors je vais vous montrer comment le faire en bonus.

échantillon

Aperçu

Pour les deux fonctions y = arctan ((n + 1) x) et y = x ^ n, nous allons introduire un exemple de superposition d'un graphe avec n décalé de 20.

points de palette de couleurs

usercmap = plt.get_cmap('jet')
cNorm  = colors.Normalize(vmin=0, vmax=num)
scalarMap = cm.ScalarMappable(norm=cNorm, cmap=usercmap)

Sélectionnez maintenant jet avec colormap, déclarez le code couleur avec des données de 0 à num (20) et générez scalarMap avec cm.ScalarMappable. Dans la boucle for Sélectionnez une couleur comme c = scalarMap.to_rgba (i).

Points pour afficher beaucoup de légendes

python


plt.legend(bbox_to_anchor=(0., 1.01, 1., 0.01), loc='lower left',ncol=10, mode="expand", borderaxespad=0.,fontsize=8)

Spécifiez l'emplacement avec bbox_to_anchor = (coordonnée X, coordonnée Y, taille X, taille Y) et ajustez le nombre de colonnes à plier avec ncol.

Exemple de code

python



#!/usr/bin/env python 
import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'serif'
import optparse
import matplotlib.pylab as plab
from matplotlib.colors import LogNorm
import matplotlib.colors as colors

### plot 1D plot : shifted 
F = plt.figure(figsize=(12,8.))
plt.subplots_adjust(wspace=0.3, hspace=0.6)

ax = plt.subplot(2,1,1)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)             
plt.figtext(0.02,0.02,"[matplotlib legend test]")
plt.xscale('linear')
plt.yscale('linear')
plt.grid(linestyle='dotted',alpha=0.5)
plt.xlabel(r'x-axis (a.u.)')
plt.ylabel(r'y-axis')        
x = np.arange(-1,1,0.1)
num=20
y = []
for j in range(num):
    y.append(np.arctan(x*(j+1)))

usercmap = plt.get_cmap('jet')
cNorm  = colors.Normalize(vmin=0, vmax=num)
scalarMap = cm.ScalarMappable(norm=cNorm, cmap=usercmap)

for i,oney in enumerate(y):
    c = scalarMap.to_rgba(i)
    plt.errorbar(x, oney, fmt="o-", color = c, alpha = 0.8, linewidth = 1, label=str(i))        

plt.legend(bbox_to_anchor=(0., 1.01, 1., 0.01), loc='lower left',ncol=10, mode="expand", borderaxespad=0.,fontsize=8)


ax = plt.subplot(2,1,2)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)             
plt.xscale('linear')
plt.yscale('linear')
plt.grid(linestyle='dotted',alpha=0.5)
plt.xlabel(r'x-axis (a.u.)')
plt.ylabel(r'y-axis')        
x = np.arange(-1,1,0.1)
num=20
y = []
for j in range(num):
    y.append(np.power(x,j+1))

usercmap = plt.get_cmap('jet')
cNorm  = colors.Normalize(vmin=0, vmax=num)
scalarMap = cm.ScalarMappable(norm=cNorm, cmap=usercmap)

for i,oney in enumerate(y):
    c = scalarMap.to_rgba(i)
    plt.errorbar(x, oney, fmt="o-", color = c, alpha = 0.8, linewidth = 1, label=str(i))        

plt.legend(bbox_to_anchor=(-0.1, 1.0, 1.2, 0.01), loc='lower left',ncol=10, mode="expand", borderaxespad=0.,fontsize=8)

plt.savefig("qiita_legend_sample.png ")
plt.show()


Cliquez ici pour la figure générée.

qiita_legend_sample.png

Remarques

Il est désormais plus facile d'agrandir la légende horizontalement et de l'afficher en dehors du graphique, mais l'option Développer ne prend en charge que horizontalement et non verticalement (à partir du 1.8 janvier 2019). Je pense que le temps sera réglé.

Recommended Posts

Comment tracer beaucoup de légendes en changeant la couleur du graphique en continu avec matplotlib
Comment éviter l'étiquette de coupure du graphique créé par le module système de tracé à l'aide de matplotlib
[Python] Comment dessiner un graphique linéaire avec Matplotlib
Lien vers les points de données du graphe créé par jupyterlab & matplotlib
[Python] Comment dessiner un diagramme de dispersion avec Matplotlib
Couleur en continu avec le diagramme de dispersion matplotlib
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Comment dessiner un graphique à barres qui résume plusieurs séries avec matplotlib
Comment calculer la volatilité d'une marque
Comment dessiner un graphique à 2 axes avec pyplot
Augmentez la taille de la police du graphique avec matplotlib
Comment afficher des images en continu avec matplotlib Memo
La base de la théorie des graphes avec l'animation matplotlib
[python] Comment trier par le Nth Mth élément d'un tableau multidimensionnel
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Ajoutez des informations au bas de la figure avec Matplotlib
Comment créer un sous-menu avec le plug-in [Blender]
[Python] Résumé de la façon de spécifier la couleur de la figure
Comment ajouter une barre de couleur dans le graphique à barres de matplotlib
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
Afficher le graphique lors de la modification des paramètres avec PySimpleGUI + Matplotlib
Essayez de créer une table d'enregistrement de bataille avec matplotlib à partir des données de "Schedule-kun"
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
[Ruby] Comment remplacer uniquement une partie de la chaîne de caractères correspondant à l'expression régulière?
Un mémo sur la façon de surmonter le problème difficile de la capture d'effets avec l'IA
[Ubuntu] Comment supprimer tout le contenu du répertoire
[Python] Comment créer une liste de chaînes de caractères caractère par caractère
Comment tester les attributs ajoutés par add_request_method de pyramid
Reformatez l'axe des temps du graphique de la série chronologique des pandas avec matplotlib
Comment afficher une liste des versions installables avec pyenv
Une histoire sur la façon de traiter le problème CORS
Comment représenter la distribution de la composition bactérienne à partir des données d'analyse Qiime2 dans un diagramme de moustaches
Créez un tableau à deux dimensions en ajoutant une ligne à la fin d'un tableau vide avec numpy
[Dessin graphique] J'ai essayé d'écrire un graphique à barres multi-séries avec matplotlib et seaborn
Comment insérer un processus spécifique au début et à la fin de l'araignée avec la tremblante
Comment connecter le contenu de la liste dans une chaîne de caractères
Comment envoyer des fichiers d'un seul coup en se connectant à un hôte de l'autre côté de la plate-forme avec SCP en plusieurs étapes
Lors de la génération d'un grand nombre de graphiques avec matplotlib, je ne souhaite pas afficher le graphique à l'écran (environnement jupyter)
Je veux créer un graphique avec des lignes ondulées au milieu avec matplotlib (je veux manipuler l'impression)
[Python] Comment utiliser l'instruction for. Une méthode d'extraction en spécifiant une plage ou des conditions.
Comment déterminer l'existence d'un élément sélénium en Python
[Statistiques] Saisir l'image de la théorie de la limitation du pôle central avec un graphe
[Introduction à Python] Comment fractionner une chaîne de caractères avec la fonction split
Comment changer la couleur du seul bouton pressé avec Tkinter
Comment vérifier la taille de la mémoire d'une variable en Python
[Introduction à StyleGAN] J'ai joué avec "The Life of a Man" ♬
Comment faire une commande pour lire le fichier de paramètres avec pyramide
J'ai essayé de résumer brièvement la procédure de démarrage du développement de Django
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
[TensorFlow 2] Comment vérifier le contenu de Tensor en mode graphique
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
Compter la partie concaténée maximale d'un graphe aléatoire avec NetworkX
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
Comment surveiller l'état d'exécution de sqlldr avec la commande pv
Comment obtenir les coordonnées de sommet d'une entité dans ArcPy
Comment envoyer une requête à l'API DMM (FANZA) avec python
[NNabla] Comment supprimer le niveau intermédiaire d'un réseau prédéfini