[PYTHON] Farbpunkte entsprechend dem Abstand von der Regressionskurve

Zweck

Code

example.py


import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()  #Es scheint, dass die Figur wunderschön gezeichnet werden kann, ich benutze sie immer

amp = 100    #Amplitude
frequency = 0.02     #Frequenz
offset = 1000       #Versatz

t = np.linspace(0,100,1000)
y_ = amp*np.sin(2*np.pi*frequency*t)+offset  #Theoretischer Wert=Wiederholungskurve sin
y = np.random.poisson(y_)    #Beobachteter Wert=Mit Irrtum Sünde

###Maine###
dis = abs( y_ - y )/ y_.max()   #Die Differenz zwischen dem theoretischen Wert und dem beobachteten Wert beträgt 0.0~1.Skalieren Sie auf einen Wert von 0
color_list=[ [1-9*i,0,i*9,i*5] for i in dis ]   #Geben Sie die Farbe mit dem RGB-Wert an

f = plt.figure(figsize = (12,6))
f.add_subplot(121)
plt.scatter(t,y_)
plt.xlabel('t')
plt.ylabel('y')

f.add_subplot(122)
plt.scatter(t,y,color = color_list)    
plt.xlabel('t')
plt.ylabel('y')

Ergebnis

image.png

Kommentar

Erstens, in Bezug auf die Daten, indem der Wert der Sinuswelle zu jedem Zeitpunkt in "np.random.poisson (y_)" eingesetzt wird, ** y ** ist eine Sinuswelle, die einer Poissonverteilung mit einem durchschnittlichen ** y_ ** -Fehler folgt. Daher hat ein großer Wert einen großen Fehler und ein kleiner Wert einen kleinen Fehler.   Wie Sie sehen können, verwendet die Hauptabstufung dieses Mal eine for-Anweisung, um die Farbe anzugeben. In matplotlib kann die Farbe durch [R, G, B, Dunkelheit] = [r, g, b, c] angegeben werden. R, g, b, c nehmen jedoch Werte von 0,0 bis 1,0 an. Unter Verwendung dieses Mechanismus wurden die vier Regeln so berechnet, dass die Farbe auf kurzen Entfernungen heller und auf langen Entfernungen dunkler wird. In diesem Beispiel ist es auf kurzen Entfernungen hellrot und auf langen Entfernungen dunkelblau.

wichtiger Punkt

Anwendung

Mit dieser Farbspezifikation kann der Abstand von der Regressionskurve in anderen Figuren dargestellt werden. Betrachten wir einen Fall, in dem der vorherige Code ein wenig geändert wird und der Fehler mit der Zeit zunimmt. (Code wird später beschrieben) Betrachtet man die Figuren der horizontalen Achse ** t **, der vertikalen Achse ** y **, der horizontalen Achse ** y_ **, der vertikalen Achse ** y **,

image.png

Aus der Abbildung links kann die Vergrößerung der Entfernung (Fehler) auf einen Blick bestätigt werden. Aus der Abbildung rechts ist ersichtlich, dass der Abstand zwischen ** y ** und ** y_ ** mit ** y_ ** korreliert. Auf diese Weise ist zu erwarten, dass das Verständnis der Daten durch Ändern der Plotachse weiter vertieft wird. Je mehr Parameter den beobachteten Wert ** y ** bestimmen, desto mehr verschiedene Perspektiven können genossen werden.

Geänderter Code

example2.py



import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()

amp=100   #Amplitude
frequency=0.02 #Frequenz
offset=1000     #vorspannen
t=np.linspace(0,100,1000)
y_=amp*np.sin(2*np.pi*frequency*t)+offset

y=np.random.poisson(y_+2.6*t)   ###Zeile ändern###

dis=abs(y_-y)/y_.max()
color_list=[[1-3*i,0,3*i,i] for i in dis]    ###Zeile ändern###

f=plt.figure(figsize=(12,6))
f.add_subplot(121)
plt.scatter(t,y,color=color_list)    
plt.xlabel('t')
plt.ylabel('y')

f.add_subplot(122)
plt.scatter(y_,y,color=color_list)
plt.xlabel('y_')
plt.ylabel('y')

Ergänzungen

Vergleich von Zeit und theoretischem Wert ** y_ ** image.png Die Farbtiefe der Umhüllung ist wahrscheinlich auf die hohe Punktdichte zurückzuführen.

Recommended Posts

Farbpunkte entsprechend dem Abstand von der Regressionskurve
Punkt entsprechend dem Bild
Zu beachtende Punkte beim Löschen mehrerer Elemente aus der Liste
Entfernen oder Abrufen von Arrays aus Fasta gemäß der ID-Listendatei
So bedienen Sie Linux von der Konsole aus
So greifen Sie von außen auf den Datenspeicher zu
[Rust] Lesen Sie CSV-Daten von Breiten- und Längengraden, um den Abstand zwischen zwei Punkten zu ermitteln
Python-Konstanten wie None (laut Referenz)
Einführung in OPTIMIZER ~ Von der linearen Regression über Adam bis Eva
Ich wollte mit der Bezier-Kurve spielen
Zu beachtende Punkte beim Wechsel von NAOqi OS 2.4.3 zu 2.5.5
So bedienen Sie Linux von außen Vorgehensweise
POST-Images von ESP32-CAM (MicroPython) an den Server
Von der Einführung von Pyethapp bis zur Vertragsabwicklung
Die Geschichte vom Umzug von Pipenv zur Poesie