Ich habe versucht, alle Python-Visualisierungstools zusammenzufassen, die von aktiven Doktoranden in der Forschung verwendet wurden [Anwendung]

Fortsetzung der vorherigen Sitzung

Dieser Artikel ist eine erweiterte Version des Visualisierungstools von Python. ~~ Es ist lang geworden, also habe ich beschlossen, die erweiterte Version in zwei Teile zu teilen. (Bewerbung 2 wird noch geschrieben) ~~ Die erweiterte Version wurde diesem Artikel hinzugefügt, um ihn zu einem zu machen. Wenn Sie mit Python-Plot nicht vertraut sind, habe ich das letzte Mal die Grundlagen geschrieben. Überprüfen Sie daher hier!

Einführung

Ich bin derzeit ein Masterstudent im zweiten Jahr. Ich untersuche die Atmosphäre des Mars mithilfe einer numerischen Simulation. Ich habe die Ergebnisse der numerischen Simulation hauptsächlich mit Python analysiert und versucht, alle im Prozess verwendeten Funktionen zusammenzufassen. Bitte beachten Sie, dass es nicht erschöpfend ist. .. .. Ich habe mir gerade die Dokumentation angesehen und mich bemüht, sie zu verwenden. Wenn also jemand die Visualisierungstools von Python verwenden möchte, hoffe ich, dass es hilft!

Was können Sie mit diesem Artikel tun?

・ Farbdiagramm (Farbe)
・ Teilen Sie die x-Achse und stellen Sie die y-Achse auf rechts und links
・ Die x-Achse ist dieselbe und die Diagramme sind vertikal angeordnet.
・ Animation (Erstellen einer GIF-Datei)

Das Folgende wird in einem anderen Artikel erklärt (ich werde diesmal schreiben)

Bibliothek zu verwenden

Die in diesem Artikel verwendeten Bibliotheken lauten wie folgt. Es ist kein Problem, wenn Sie den folgenden Code vorerst kopieren und in den Code einfügen.

import matplotlib.pyplot as plt #Eigentlich Handlung
import numpy as np #Daten organisieren
from matplotlib.colors import LogNorm #Protokollfarbleiste
from matplotlib import animation as animation #Erstellen Sie eine GIF-Datei

Verwendung des Farbplots (pcolor)

Was ist überhaupt ein Farbplot? Ich denke, dass es viele Menschen gibt, daher werden 3D-Daten durch eine 2D-Farbkarte dargestellt, wie in der folgenden Grafik dargestellt. ~~ Weil es eine große Sache ist, habe ich ein künstlerisches Gesicht ... lol ~~ Screen Shot 2020-03-20 at 13.26.09.png

Struktur & Erklärung der Grafikzeichnung mit pcolor. (Bitte kopieren und verwenden)

#Struktur der Farbe

#1
#x-Achse,Bereiten Sie die Daten und das Netz der y-Achse vor
#Wahrscheinlich von den 3D-Daten, die Sie zeichnen möchten(x,y)Ich denke, es gibt Zutaten.
#ex) x = y = np.arange(-10, 10, 0.5)
X, Y = np.meshgrid(x, y) #Dieser X.,Y ist len(x)*len(y)Es wird eine Matrix von.

#2
#Erstellen Sie Z.
#Wenn Sie Daten haben, die Sie zeichnen möchten
#X in Schritt 1 gemacht,Erstellen Sie eine Matrix Z mit der gleichen Größe wie Y.(Erstellen Sie eine Matrix, indem Sie aus csv lesen)
#Wenn nicht(Dieses Beispiel)
#Z=f(X,Y)Schreiben Sie die Funktion als
#ex) 
Z = np.exp(-X**2-Y**2)

#Wenn die Daten eine Lücke aufweisen und Sie den Bereich maskieren möchten(Gegebenenfalls auskommentieren)
#Z = np.ma.masked_where(np.isnan(Z), Z)#Maskiere keinen Ort

#3
#Handlung
fig, ax = plt.subplots(dpi=100) #dpi:Auflösung

#Erstellen Sie eine Farbkarte
c=ax.pcolor(X,Y,Z,cmap='Lieblingsfarbkarte', vmin=Mindestwert, vmax=Maximalwert)
#c=ax.pcolor(X,Y,Z, norm=LogNorm(Mindestwert,Maximalwert),cmap='Lieblingsfarbkarte') #log scale ver

#Fügen Sie eine Farbleiste hinzu
cax = fig.colorbar(c, ax=ax) #Fügen Sie eine Farbleiste hinzu

#Füllen Sie den maskierten Bereich mit diagonalen Linien(Gegebenenfalls auskommentieren)
#ax.patch.set(hatch='x', edgecolor='black')

Ich denke, es ist schwer vorstellbar, also ist zum Beispiel X im Beispielcode X= Screen Shot 2020-03-20 at 14.35.07.png Es ist eine Matrix aus len (x) * len (y). Z ist auch eine Matrix gleicher Größe, und der z-Wert der Koordinaten (x, y) setzt sich als Element zusammen.

Die Farbfunktion

c=ax.pcolor(X,Y,Z,cmap='Lieblingsfarbkarte', vmin=Mindestwert, vmax=Maximalwert)

-Cmap = 'Farbkartentyp' kann verwendet werden, um anzugeben, welche Farbe verwendet werden soll. Sie finden viel in diesem offiziellen Dokument. -Sie können den Bereich festlegen, in dem Sie vmin und vmax färben möchten. Das heißt, die Pixel werden mit z-Werten von vmin bis vmax gefärbt.

Dies ist ein Beispielcode für das in pcolor geschriebene Gesicht.

#pcolor
from matplotlib.colors import LogNorm
import matplotlib.pyplot as plt #Eigentlich Handlung
import numpy as np #Daten organisieren

x = y = np.arange(-10, 10, 0.5)
X, Y = np.meshgrid(x, y)#Vernetzen und erstellen Sie eine Matrix
#Eine Funktion, die Augen, Nase und Mund des Gesichts ausdrückt
Z = np.exp(-(X+5)**2 - (Y-3)**2)+np.exp(-(X-5)**2-(Y-3)**2)+np.exp(-(X)**2-(5*(Y+5))**2)+np.exp(-(10*X)**2-(5*Y)**2)
fig, ax = plt.subplots(dpi=200)
#Grundstück mit Farbe
c=ax.pcolor(X,Y,Z, norm=LogNorm(1e-4, 1),cmap='Set3')
cax = fig.colorbar(c, ax=ax,shrink=0.9)

Teilen Sie die x-Achse und setzen Sie die y-Achse auf rechts und links

Dies ist die Grafik. Screen Shot 2020-03-18 at 23.24.28.png

Wenn Sie die x-Achse freigeben, ist es in Ordnung, wenn die Struktur wie folgt ist. (Zum Kopieren und Einfügen)

fig, ax1 = plt.subplots(dpi=100)
##Schreiben Sie hier ax1 plot
#ax1.plot(...)
#ax1.set_??

ax2 = ax1.twinx()#Jetzt können Sie die x-Achse teilen!!!
##Schreiben Sie hier ax2 plot
#ax2.plot(...)
#ax2.set_??

Unten ist der Beispielcode.

import matplotlib.pyplot as plt #Eigentlich Handlung
import numpy as np #Daten organisieren
def fun(x): 
    y = 2**x #Schreiben Sie hier Ihre eigene Funktion
    return y
#prepare x,y data
X = np.linspace(1,10,num=100)
Y1 = fun(X)
Y2 = np.exp(X)

#Plot für die linke y-Achse
fig, ax1 = plt.subplots(dpi=100)
ax1.plot(X,Y1,color='g',label=r'$y=2^x$', linestyle='-.',)
ax1.set_xlabel('xaxis')
ax1.set_ylabel("yaxis1")
ax1.set_ylim((0,100))
ax1.tick_params(axis='y')
ax1.legend(loc="upper left")

#Plot für die rechte y-Achse
ax2 = ax1.twinx()#Jetzt können Sie die x-Achse teilen!!!
ax2.plot(X,Y2,color='r', label=r'$y=e^x$')#Handlung
ax2.set_ylabel('yaxis2')  # we already handled the x-label with ax1
ax2.set_yscale("log") #Rechte y-Achse auf Protokollskala eingestellt
ax2.set_ylim((1,10000))
ax2.legend(loc="upper right")

Die x-Achse ist dieselbe und die Diagramme sind vertikal angeordnet

Ich möchte eine solche Grafik zeichnen! Screen Shot 2020-03-18 at 23.49.39.png

Wenn Sie zwei Diagramme vertikal anordnen, ist es in Ordnung, wenn die folgende Struktur verwendet wird.

#(1)
#Ordnen Sie zwei Untergrundstücke vertikal an
fig, axs = plt.subplots(2,1,sharex=True,dpi=100)
#Setzen Sie 0 zwischen dem oberen und unteren Diagramm und kleben Sie sie zusammen
fig.subplots_adjust(hspace=0)

#(2)
#Zeichnen Sie die Grafik oben
axs[0].plot(...)

#(3)
#Zeichnen Sie die Grafik unten
axs[1].plot(...)

#Hinweis
#Die Anzahl der Grafiken kann frei geändert werden
#ex) 2,3 statt 1,Bei 1 wird 3 vertikal angeordnet,,,
#dpi:Auflösung
#sharex=Wenn auf False gesetzt, wird es nur eine Nebenhandlung.

Unten ist der Beispielcode.


#Definieren Sie Ihre Lieblingsfunktion
import matplotlib.pyplot as plt #Eigentlich Handlung
import numpy as np #Daten organisieren
def fun(x): 
    y = 2**x #Schreiben Sie hier Ihre eigene Funktion
    return y

#prepare x,y data
X = np.linspace(1,10,num=100)
Y1 = fun(X)#Y-Daten, die Sie zeichnen möchten
Y2 = np.exp(X)

#create 2 subplots vertically adjusted
fig, axs = plt.subplots(2,1,sharex=True,dpi=100)
fig.subplots_adjust(hspace=0)

#Grafik oben
axs[0].plot(X,Y1,color='g',label=r'$y=2^x$', linestyle='-.',)
axs[0].set_ylabel("yaxis1")
axs[0].set_ylim((1,100))
axs[0].tick_params(axis='y')
axs[0].legend(loc="upper right")

#Grafik unten
axs[1].plot(X,Y2,color='r', label=r'$y=e^x$')
axs[1].set_xlabel('xaxis')
axs[1].set_ylabel('yaxis2')  # we already handled the x-label with ax1
axs[1].set_yscale("log") #Rechte y-Achse auf Protokollskala eingestellt
axs[1].legend(loc="upper right")

Animation (GIF-Datei erstellen)

Ich habe die einfachste erstellt. filename.gif

Struktur und Erklärung der Erstellung von GIF-Dateien. (Zum Kopieren und Einfügen)

import matplotlib.pyplot as plt #Eigentlich Handlung
import numpy as np #Daten organisieren
from matplotlib import animation as animation #Erstellen Sie eine GIF-Datei

#Sie haben wahrscheinlich die Daten, die Sie zeichnen möchten und die sich im Laufe der Zeit ändern
#X es,Y(t)Wenn Sie das tun

#Erstellen Sie zunächst eine Funktion, um jeden Frame zu zeichnen
#Diese Variable i'interval'Wird nach und nach zunehmen
def iplot(i, args,,,):
   plt.clf()#Löschen Sie das Diagramm im vorherigen Frame(Löschen, wenn Sie behalten möchten)
   #Zeichnen Sie hier ein Einzelbild
   #Wenn i zunimmt, ändern sich die zu zeichnenden Daten entsprechend.
   #ex) plt.plot(X,Y(i))

#Machen Sie wie gewohnt eine Figur
fig = plt.figure(dpi=100) #dpi:Auflösung

#Erstellung von GIF-Dateien
#Bedeutung:Erhöhen Sie i für jedes Bild um das Intervall um die Anzahl der Bilder in Abb. Und zeichnen Sie mit der iplot-Funktion.
#fargs=(,,)Gibt ein anderes Argument als i der iplot-Funktion an
#Ich erhöhe jedes Intervall
#Sie können angeben, wie viele Frames mit Frames erstellt werden sollen
ani = animation.FuncAnimation(fig, iplot,fargs=(args), interval = 1, frames = 50)

#sparen
#Geben Sie den Dateinamen an
#schreibe r, welche Methode soll ich verwenden? Mit Imagegick gibt es vorerst kein Problem
#Geben Sie an, wie viele Bilder pro Sekunde mit fps erstellt werden sollen
ani.save('filename.gif', writer='imagemagick', fps=20)

Der Beispielcode ist unten.

import matplotlib.pyplot as plt #Eigentlich Handlung
import numpy as np #Daten organisieren
from matplotlib import animation as animation #Erstellen Sie eine GIF-Datei

#Bereiten Sie X und Y für die Darstellung vor.
X = np.linspace(1,10,num=100)
Y = 2*X #y=2x

#Erstellen Sie eine Funktion, um jeden Frame zu zeichnen
#Diese Variable i(In der Animationsfunktion unten)'interval'Wird nach und nach zunehmen
def iplot(i,X,Y):
    plt.clf()#Ohne dies bleibt der Graph des vorherigen Frames erhalten
    plt.plot(X+i,Y)#Diesmal y=Bewegen Sie sich 2x parallel in x-Richtung
    plt.xlim((0,60))#Definieren Sie den Bereich
    plt.xlabel('xaxis')
    plt.ylabel('yaxis')
    plt.text(2,18,"y=2(x-"+str(i)+")")

fig = plt.figure(dpi=100)
#Erstellen Sie eine GIF-Datei
ani = animation.FuncAnimation(fig, iplot,fargs=(X,Y), interval = 1, frames = 50)

#sparen
ani.save('filename.gif', writer='imagemagick', fps=20)

Schließlich

Da die erweiterte Version lang geworden ist, werde ich den folgenden Artikel zu einem späteren Zeitpunkt schreiben. Inhalt

ist. Dann!

Recommended Posts

Ich habe versucht, alle Python-Visualisierungstools zusammenzufassen, die von aktiven Doktoranden in der Forschung verwendet wurden [Anwendung]
Ich habe versucht, den in Pandas häufig verwendeten Code zusammenzufassen
Ich habe versucht, die im Geschäftsleben häufig verwendeten Befehle zusammenzufassen
Ich habe versucht, die Befehle zusammenzufassen, die Anfängeringenieure heute verwenden
Ich habe versucht, den Inhalt jedes von Python pip gespeicherten Pakets in einer Zeile zusammenzufassen
[Python] Ich habe versucht, den kollektiven Typ (Satz) auf leicht verständliche Weise zusammenzufassen.
Ich habe versucht, die Linux-Befehle zusammenzufassen, die heute von Anfängeringenieuren verwendet werden - Teil 1-
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Ich habe versucht zusammenzufassen, wie man Pandas von Python benutzt
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
Ich habe versucht zusammenzufassen, was der Python-starke Mann in der professionellen Nachbarschaft des Wettbewerbs tut
Ich habe versucht, die häufig verwendete Implementierungsmethode von pytest-mock zusammenzufassen
Ich habe versucht, die Behandlung von Python-Ausnahmen zusammenzufassen
Ich habe versucht, PLSA in Python zu implementieren
Ich habe versucht, den Befehl umask zusammenzufassen
Ich habe versucht, Permutation in Python zu implementieren
Ich habe versucht, den allgemeinen Ablauf bis zur Erstellung von Diensten selbst zusammenzufassen.
Ich habe versucht, die Methoden zusammenzufassen, die häufig bei der grundlegenden Algo-Implementierung in Quantx Factory verwendet werden
Ich habe versucht, PLSA in Python 2 zu implementieren
Python3-Standardeingabe habe ich versucht zusammenzufassen
Ich habe versucht, die Bayes'sche lineare Regression durch Gibbs-Sampling in Python zu implementieren
Ich habe versucht, die grafische Modellierung zusammenzufassen.
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, PPO in Python zu implementieren
Ich habe versucht, die Beschleunigung von Python durch Cython zu verifizieren und zu analysieren
Ich habe versucht, die Neujahrskarte selbst mit Python zu analysieren
Ich habe versucht, die beim maschinellen Lernen verwendeten Bewertungsindizes zu organisieren (Regressionsmodell).
Lesen aller in * .py enthaltenen Klassen in dem von Python angegebenen Verzeichnis
Ich habe versucht, die Operationen zusammenzufassen, die wahrscheinlich mit numpy-stl verwendet werden
Ich habe versucht, die Veränderung der Schneemenge für 2 Jahre durch maschinelles Lernen vorherzusagen
Ich habe versucht, Satzklassifizierung und Aufmerksamkeitsvisualisierung durch das japanische BERT mit PyTorch zu implementieren
[Einführung in Docker] Ich habe versucht, verschiedene Docker-Kenntnisse zusammenzufassen, die durch das Studium gewonnen wurden (Windows / Python).
Ich habe versucht, "Birthday Paradox" mit Python zu simulieren
Ich habe die Methode der kleinsten Quadrate in Python ausprobiert
Ich habe versucht, TOPIC MODEL in Python zu implementieren
Ich habe versucht, das Datetime-Modul von Python zu verwenden
Ich habe versucht, eine selektive Sortierung in Python zu implementieren
LeetCode Ich habe versucht, die einfachen zusammenzufassen
Ich möchte den Fortschritt in Python anzeigen!
[Erste Datenwissenschaft ⑤] Ich habe versucht, meinem Freund zu helfen, die erste Eigenschaft durch Datenanalyse zu finden
Ich habe versucht, die neuen mit dem Corona-Virus infizierten Menschen in Ichikawa City, Präfektur Chiba, zusammenzufassen
[Erste Datenwissenschaft ⑥] Ich habe versucht, den Marktpreis von Restaurants in Tokio zu visualisieren
Ich habe Python verwendet, um mich über die Rollenauswahl der 51 "Yachten" in der Welt zu informieren.
[Python] Ich habe versucht, das Array, die Wörterbuchgenerierungsmethode, die Schleifenmethode und die Listeneinschlussnotation zusammenzufassen
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Ich habe versucht, Drakues Poker in Python zu implementieren
Ich habe versucht, GA (genetischer Algorithmus) in Python zu implementieren
[Python] Ich habe versucht, die Top 10 der Lidschatten grafisch darzustellen
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich möchte R-Datensatz mit Python verwenden
Python Open CV hat versucht, das Bild im Text anzuzeigen.
Django super Einführung von Python-Anfängern! Teil 6 Ich habe versucht, die Login-Funktion zu implementieren
Ich habe auch versucht, die Funktionsmonade und die Zustandsmonade mit dem Generator in Python nachzuahmen
Ich habe versucht, die Sprachen, die Anfänger von nun an lernen sollten, absichtlich zusammenzufassen