[PYTHON] Je veux gagner s'il y a le grand prix de visualisation le plus inutile au monde ・ Apprenez la visualisation en faisant évoluer la fonction OP

Pourquoi enseignez-vous habituellement la visualisation !!!! Voilà pourquoi

Je veux faire évoluer la fonction OP !!

Cliquez ici pour la fonction OP créée la dernière fois

Créez une fonction pour dessiner une belle courbe ʻOP` avec matplotlib de langage Python Faites de la visualisation.

De plus, ce n'est pas intéressant s'il ne s'agit que d'une image fixe Il a la fonction d'ipywidgets.

Beyond Beyond se déplace lorsque le nombre «t» est modifié.

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

Ouf Avec ça, c'est juste dessiné avec une courbe noire terne Vous n'avez pas atteint le royaume de l'art.

Colorons la fonction pour se rapprocher de l'idéal.

Cliquez ici pour la fonction OP améliorée

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

    #Points d'amélioration
    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

C'est une couleur magnifique! !! !!

Mécanisme de visualisation

Sur le mécanisme de matplotlib Vous devez d'abord décider où tracer.

Deux nombres sont nécessaires pour le diagramme de dispersion. Les valeurs sur l'axe vertical et les valeurs sur l'axe horizontal.

Les valeurs dans le sens vertical utilisées pour dessiner le tout sont fixes. y = np.arange(-3, 3.01, 0.01)

«y» est un groupe de nombres de -3 à 3 par incréments de 0,01.

En revanche, la valeur dans la direction de l'axe horizontal sera calculée. La fonction ʻoppai (y, t) calcule un par un pour le groupe numérique y`. Créez un ensemble de nombres «x».

L'argument «t» est une valeur numérique pour un ajustement fin Ceci est également calculé par incréments de 0,1 de 0,1 à 5.

Tracez sur un diagramme de dispersion en utilisant les nombres x et y. plt.plot(x, y)

Cela dessinera cette courbe lisse ʻOP`.

Vient ensuite plt.fill_between Cela se remplit de couleur.

Et le point le plus important est le «quartier B» courbe C'est mon point préféré.

Encore une fois, vous devez calculer la plage de points de remplissage.

    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]

Ici, il semble qu'il s'insère dans la bonne plage dans les directions verticale et horizontale Je fais du calcul numérique.

ʻEnumérer (b_chiku> 3.08361524e-003) Le fait qu'il soit supérieur à ce nombre est renvoyé sous la forme «Vrai» ou «Faux». Puisqu'il s'agit de la valeur d'index de «zone B», la valeur de «zone B» Récupère la valeur numérique par index du groupe de valeurs numériques de la courbe entière ʻOP.

Maintenant que vous avez calculé le «district B», peignez-le avec une belle couleur. Terminer.

finalement

Non Le calcul numérique est difficile lors du déplacement

Mais Vous devriez pouvoir ressentir le vrai frisson que vous ne pouvez pas obtenir avec les images fixes.

C'est pourquoi utiliser Python et matplotlib. Même si vous n'êtes pas familier avec la science des données, la visualisation vaut la peine d'être étudiée.

À propos, la teinte est # F8ABA6 J'ai aimé cette couleur.

Veuillez changer la couleur en votre couleur préférée. Eh bien

Informations sur l'auteur

HP d'Otsu py: http://www.otupy.net/

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

Twitter: https://twitter.com/otupython

Recommended Posts

Je veux gagner s'il y a le grand prix de visualisation le plus inutile au monde ・ Apprenez la visualisation en faisant évoluer la fonction OP
Je veux initialiser si la valeur est vide (python)
J'ai créé une fonction pour vérifier si le webhook est reçu dans Lambda pour le moment
Je veux connaître la population de chaque pays du monde.
Je souhaite recevoir le fichier de configuration et vérifier si le fichier JSON généré par jinja2 est un JSON valide
Je veux changer la couleur en cliquant sur le point de dispersion dans matplotlib
Je veux obtenir le nom du fichier, le numéro de ligne et le nom de la fonction dans Python 3.4
Je souhaite utiliser la fonction d'activation Mish
Je veux afficher la progression en Python!
J'ai essayé d'entraîner la fonction péché avec chainer
S'il n'y avait pas de conteneurs DI dans le monde.
Je veux écrire en Python! (3) Utiliser des simulacres
Je veux dire qu'il y a un prétraitement des données ~
Je veux utiliser le jeu de données R avec python
Si vous voulez mettre un argument dans la fonction de fermeture et l'exécuter plus tard