[PYTHON] Ich möchte gewinnen, wenn es den nutzlosesten Grand Prix für Visualisierung der Welt gibt. Lernen Sie Visualisierung, indem Sie die OP-Funktion weiterentwickeln

Wofür unterrichten Sie normalerweise Visualisierung? Deshalb

Ich möchte die OP-Funktion weiterentwickeln !!

Klicken Sie hier, um die zuletzt erstellte OP-Funktion aufzurufen

Erstellen Sie eine Funktion zum Zeichnen einer schönen Kurve "OP" mit matplotlib in Python-Sprache Visualisierung machen.

Außerdem ist es nicht interessant, ob es sich nur um ein Standbild handelt Es hat die Funktion von ipywidgets.

Beyond Beyond bewegt sich, wenn die Zahl "t" geändert wird.

import numpy as np
import matplotlib.pyplot as plt
from ipywidgets import interact, FloatSlider, IntSlider
import warnings
warnings.simplefilter('ignore')
%matplotlib inline

def oppai(y,t):
    x_1 = (1.5 * np.exp((0.12*np.sin(t)-0.5) * (y + 0.16 *np.sin(t)) ** 2)) / (1 + np.exp(-20 * (5 * y + np.sin(t))))
    x_2 = ((1.5 + 0.8 * (y + 0.2*np.sin(t)) ** 3) * (1 + np.exp(20 * (5 * y +np.sin(t)))) ** -1)
    x_3 = (1+np.exp(-(100*(y+1)+16*np.sin(t))))
    x_4 = (0.2 * (np.exp(-(y + 1) ** 2) + 1)) / (1 + np.exp(100 * (y + 1) + 16*np.sin(t)))
    x_5 = (0.1 / np.exp(2 * (10 * y + 1.2*(2+np.sin(t))*np.sin(t)) ** 4))
    x = x_1 + (x_2 / x_3) + x_4 + x_5
    return x
 
t = FloatSlider(min=0.1, max=5.0, step=0.1, value=0)
y = np.arange(-3, 3.01, 0.01)

@interact(t=t)
def plot_oppai(t):
    x = oppai(y,t)
    plt.figure(figsize=(10,9))
    plt.axes().set_aspect('equal', 'datalim')
    plt.grid()
    plt.plot(x, y, 'black')
    plt.show()
スクリーンショット 2020-07-12 19.51.46.png

Wütend Damit wird es nur mit einer stumpfen schwarzen Kurve gezeichnet Sie haben das Reich der Kunst noch nicht erreicht.

Lassen Sie uns die Funktion einfärben, um dem Ideal näher zu kommen.

Klicken Sie hier für die verbesserte OP-Funktion

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from ipywidgets import interact, FloatSlider, IntSlider
import warnings
warnings.simplefilter('ignore')
%matplotlib inline

def oppai(y,t):
    x_1 = (1.5 * np.exp((0.12*np.sin(t)-0.5) * (y + 0.16 *np.sin(t)) ** 2)) / (1 + np.exp(-20 * (5 * y + np.sin(t))))
    x_2 = ((1.5 + 0.8 * (y + 0.2*np.sin(t)) ** 3) * (1 + np.exp(20 * (5 * y +np.sin(t)))) ** -1)
    x_3 = (1+np.exp(-(100*(y+1)+16*np.sin(t))))
    x_4 = (0.2 * (np.exp(-(y + 1) ** 2) + 1)) / (1 + np.exp(100 * (y + 1) + 16*np.sin(t)))
    x_5 = (0.1 / np.exp(2 * (10 * y + 1.2*(2+np.sin(t))*np.sin(t)) ** 4))
    x = x_1 + (x_2 / x_3) + x_4 + x_5
    return x
 
t = FloatSlider(min=0.1, max=5.0, step=0.1, value=0)
y = np.arange(-3, 3.01, 0.01)
 
@interact(t=t)
def plot_oppai(t):
    x = oppai(y,t)
    plt.figure(figsize=(10,9))
    plt.axes().set_aspect('equal', 'datalim')
    plt.grid()

    #Verbesserungspunkte
    b_chiku = (0.1 / np.exp(2 * (10 * y + 1.2*(2+np.sin(t))*np.sin(t)) ** 4))
    b_index = [i for i ,n in enumerate(b_chiku>3.08361524e-003) if n]
    x_2,y_2 = x[b_index],y[b_index]
    plt.axes().set_aspect('equal', 'datalim')
    plt.plot(x, y, '#F5D1B7')
    plt.fill_between(x, y, facecolor='#F5D1B7', alpha=1)
    plt.plot(x_2, y_2, '#F8ABA6')
    plt.fill_between(x_2, y_2, facecolor='#F8ABA6', alpha=1)
    plt.show()

タイトルなし.gif

Es ist eine wundervolle Farbe! !! !!

Visualisierungsmechanismus

Über den Mechanismus von Matplotlib Zuerst müssen Sie entscheiden, wo Sie zeichnen möchten.

Für das Streudiagramm sind zwei Zahlen erforderlich. Die Werte auf der vertikalen Achse und die Werte auf der horizontalen Achse.

Die Werte in vertikaler Richtung, die zum Zeichnen des Ganzen verwendet werden, sind fest. y = np.arange(-3, 3.01, 0.01)

y ist eine Gruppe von Zahlen von -3 bis 3 in Schritten von 0,01.

Andererseits wird der Wert in Richtung der horizontalen Achse berechnet. Die Funktion oppai (y, t) berechnet nacheinander für die numerische Gruppe y. Erstellen Sie eine Reihe von Zahlen x.

Das Argument "t" ist ein numerischer Wert für die Feineinstellung Dies wird ebenfalls in Schritten von 0,1 von 0,1 bis 5 berechnet.

Zeichnen Sie auf einem Streudiagramm mit den x- und y-Zahlen. plt.plot(x, y)

Dadurch wird diese glatte Kurve "OP" gezeichnet.

Als nächstes kommt plt.fill_between Dies füllt sich mit Farbe.

Und der größte Punkt ist das gekrümmte "B-Viertel" Dies ist mein persönlicher Lieblingspunkt.

Auch hier müssen Sie den Bereich der Füllpunkte berechnen.

    b_chiku = (0.1 / np.exp(2 * (10 * y + 1.2*(2+np.sin(t))*np.sin(t)) ** 4))
    b_index = [i for i ,n in enumerate(b_chiku>3.08361524e-003) if n]
    x_2,y_2 = x[b_index],y[b_index]

Hier scheint es in vertikaler und horizontaler Richtung in den richtigen Bereich zu passen Ich mache eine numerische Berechnung.

In enumerate (b_chiku> 3.08361524e-003) Ob es größer als diese Zahl ist, wird als "Wahr" oder "Falsch" zurückgegeben. Da dies der Indexwert von "B-Bereich" ist, der Wert von "B-Bereich" Ermitteln Sie den numerischen Wert anhand des Index aus der numerischen Wertegruppe der gesamten Kurve "OP".

Nachdem Sie den B-Bezirk berechnet haben, malen Sie ihn mit einer schönen Farbe. Fertig.

Schließlich

Nein Die numerische Berechnung ist beim Bewegen schwierig

Aber Sie sollten in der Lage sein, den Nervenkitzel zu bekommen, den Sie mit Standbildern nicht bekommen können.

Deshalb mit Python und Matplotlib. Auch wenn Sie mit Data Science nicht vertraut sind, lohnt es sich, die Visualisierung zu studieren.

Der Schatten ist übrigens "# F8ABA6" Ich mochte diese Farbe.

Bitte ändern Sie die Farbe in Ihre Lieblingsfarbe. Na dann

Informationen zum Autor

HP von Otsu py: http://www.otupy.net/

Youtube: https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter: https://twitter.com/otupython

Recommended Posts

Ich möchte gewinnen, wenn es den nutzlosesten Grand Prix für Visualisierung der Welt gibt. Lernen Sie Visualisierung, indem Sie die OP-Funktion weiterentwickeln
Ich möchte initialisieren, wenn der Wert leer ist (Python)
Ich habe eine Funktion erstellt, um zu überprüfen, ob der Webhook vorerst in Lambda empfangen wird
Ich möchte die Bevölkerung jedes Landes der Welt kennenlernen.
Ich möchte die Einstellungsdatei erhalten und prüfen, ob die von jinja2 generierte JSON-Datei eine gültige JSON ist
Ich möchte die Farbe ändern, indem ich auf den Streupunkt in matplotlib klicke
Ich möchte den Dateinamen, die Zeilennummer und den Funktionsnamen in Python 3.4 erhalten
Ich möchte die Aktivierungsfunktion Mish verwenden
Ich möchte den Fortschritt in Python anzeigen!
Ich habe versucht, die Sündenfunktion mit Chainer zu trainieren
Wenn es keine DI-Container auf der Welt gäbe.
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Ich möchte sagen, dass es eine Datenvorverarbeitung gibt ~
Ich möchte R-Datensatz mit Python verwenden
Wenn Sie ein Argument in die Abschlussfunktion einfügen und später ausführen möchten