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!
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!
Das Folgende wird in einem anderen Artikel erklärt (ich werde diesmal schreiben)
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
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 ~~
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=
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)
Dies ist die Grafik.
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")
Ich möchte eine solche Grafik zeichnen!
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")
Ich habe die einfachste erstellt.
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)
Da die erweiterte Version lang geworden ist, werde ich den folgenden Artikel zu einem späteren Zeitpunkt schreiben. Inhalt
ist. Dann!
Recommended Posts