[PYTHON] Wie man zeichnet, indem man die Farbe des Diagramms kontinuierlich mit matplotlib ändert und einfach viele Legenden anordnet

Ich möchte die Farbe mit matplotlib ändern und viele Legenden anzeigen

Verwendung

Ich möchte viele Grafiken mit matplotlib anzeigen, aber standardmäßig kann ich nur eine begrenzte Anzahl von Farben erhalten. Ich möchte einen einfachen Weg vorstellen, um dies zu lösen. In diesem Fall möchte ich oft viele Legenden zeigen, was mit der alten Matplotlib schwierig war, aber jetzt ist es sehr einfach, also zeige ich Ihnen als Bonus, wie es geht.

Stichprobe

Überblick

Für die beiden Funktionen y = arctan ((n + 1) x) und y = x ^ n werden wir ein Beispiel für die Überlagerung eines Graphen mit um 20 verschobenem n vorstellen.

Farbkartenpunkte

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

Wählen Sie nun Jet mit Farbkarte aus, deklarieren Sie die Farbcodierung mit 0 bis num (20) Daten und generieren Sie eine skalare Karte mit cm.ScalarMappable. In der for-Schleife Wählen Sie eine Farbe als c = scalarMap.to_rgba (i).

Punkte für die Anzeige vieler Legenden

python


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

Geben Sie die Position mit bbox_to_anchor = (X-Koordinate, Y-Koordinate, X-Größe, Y-Größe) an und passen Sie die Anzahl der Spalten an, die mit ncol gefaltet werden sollen.

Beispielcode

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()


Klicken Sie hier für die generierte Abbildung.

qiita_legend_sample.png

Vorsichtsmaßnahmen

Dies erleichtert das horizontale Erweitern der Legende und das Anzeigen außerhalb des Diagramms. Die Option Erweitern unterstützt jedoch nur die horizontale Ausrichtung, nicht die vertikale Ausrichtung (Stand: 1.8. Januar 2019). Ich denke, die Zeit wird geregelt sein.

Recommended Posts

Wie man zeichnet, indem man die Farbe des Diagramms kontinuierlich mit matplotlib ändert und einfach viele Legenden anordnet
So vermeiden Sie die Cut-Off-Beschriftung des Diagramms, das vom Plotsystemmodul mit matplotlib erstellt wurde
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
Link zu den Datenpunkten des von jupyterlab & matplotlib erstellten Diagramms
[Python] Wie zeichnet man mit Matplotlib ein Streudiagramm?
Kontinuierliche Farbe mit Matplotlib-Streudiagramm
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
So zeichnen Sie mit matplotlib ein Balkendiagramm, das mehrere Serien zusammenfasst
So berechnen Sie die Volatilität einer Marke
So zeichnen Sie ein 2-Achsen-Diagramm mit Pyplot
Erhöhen Sie die Schriftgröße des Diagramms mit matplotlib
So zeigen Sie Bilder kontinuierlich mit matplotlib Memo an
Die Basis der Graphentheorie mit Matplotlib-Animation
[Python] So sortieren Sie nach dem N-ten M-ten Element eines mehrdimensionalen Arrays
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Fügen Sie mit Matplotlib Informationen am unteren Rand der Abbildung hinzu
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]
[Python] Zusammenfassung, wie die Farbe der Figur angegeben wird
So fügen Sie dem Balkendiagramm von matplotlib einen Farbbalken hinzu
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
Zeigen Sie das Diagramm an, während Sie die Parameter mit PySimpleGUI + Matplotlib ändern
Versuchen Sie, mit matplotlib aus den Daten von "Schedule-kun" eine Kampfaufzeichnungstabelle zu erstellen.
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
[Ruby] Wie ersetze ich nur einen Teil der Zeichenkette, der mit dem regulären Ausdruck übereinstimmt?
Ein Memo darüber, wie man das schwierige Problem der Erfassung von FX mit AI überwinden kann
[Ubuntu] So löschen Sie den gesamten Inhalt des Verzeichnisses
[Python] So erstellen Sie eine Liste von Zeichenfolgen Zeichen für Zeichen
So testen Sie die Attribute, die durch add_request_method of pyramid hinzugefügt wurden
Formatieren Sie die Zeitachse des Pandas-Zeitreihendiagramms mit matplotlib neu
So zeigen Sie eine Liste der mit pyenv installierbaren Versionen an
Eine Geschichte über den Umgang mit dem CORS-Problem
Darstellung der Verteilung der Bakterienzusammensetzung aus Qiime2-Analysedaten in einem Box-Whisker-Diagramm
Erstellen Sie ein zweidimensionales Array, indem Sie am Ende eines leeren Arrays mit numpy eine Zeile hinzufügen
[Grafikzeichnung] Ich habe versucht, ein mehrreihiges Balkendiagramm mit Matplotlib und Seaborn zu schreiben
Wie man einen bestimmten Prozess am Anfang und Ende der Spinne mit Scrapy einfügt
So verbinden Sie den Inhalt der Liste mit einer Zeichenfolge
So senden Sie Dateien auf einmal, indem Sie mit SCP in mehreren Schritten eine Verbindung zu einem Host auf der anderen Seite der Plattform herstellen
Wenn ich mit matplotlib eine große Anzahl von Diagrammen generiere, möchte ich das Diagramm nicht auf dem Bildschirm anzeigen (Jupyter-Umgebung).
Ich möchte mit matplotlib ein Diagramm mit Wellenlinien in der Mitte erstellen (ich möchte den Eindruck manipulieren).
[Python] Verwendung der for-Anweisung. Eine Methode zum Extrahieren durch Angabe eines Bereichs oder von Bedingungen.
So bestimmen Sie die Existenz eines Selenelements in Python
[Statistik] Erfassen Sie das Bild der zentralen Polbegrenzungstheorie mit einem Diagramm
[Einführung in Python] So teilen Sie eine Zeichenfolge mit der Funktion split
So ändern Sie die Farbe nur der mit Tkinter gedrückten Taste
So überprüfen Sie die Speichergröße einer Variablen in Python
[Einführung in StyleGAN] Ich habe mit "The Life of a Man" ♬ gespielt
So erstellen Sie einen Befehl zum Lesen der Einstellungsdatei mit Pyramide
Ich habe versucht, das Entwicklungsstartverfahren von Django kurz zusammenzufassen
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
[TensorFlow 2] So überprüfen Sie den Inhalt von Tensor im Diagrammmodus
So ermitteln Sie die Speicheradresse des Pandas-Datenrahmenwerts
Zählen Sie mit NetworkX den maximal verketteten Teil eines zufälligen Diagramms
So geben Sie das Ausgabeergebnis des Linux-Befehls man in eine Datei aus
So überwachen Sie den Ausführungsstatus von sqlldr mit dem Befehl pv
So ermitteln Sie die Scheitelpunktkoordinaten eines Features in ArcPy
So senden Sie eine Anfrage mit Python an die DMM (FANZA) -API
[NNabla] So entfernen Sie die mittlere Ebene eines vorgefertigten Netzwerks