J'ai essayé de résumer tous les outils de visualisation Python utilisés dans la recherche par des étudiants diplômés en sciences actifs [Application]

Suite de la session précédente

Cet article est une version avancée de l'outil de visualisation de Python. ~~ C'est devenu long, j'ai donc décidé de diviser la version avancée en deux. (L'application 2 est toujours en cours d'écriture) ~~ La version avancée a été ajoutée à cet article pour en faire une. Si vous n'êtes pas familier avec l'intrigue Python, j'ai écrit les bases la dernière fois, alors veuillez vérifier ici!

introduction

Je suis actuellement étudiant en master de deuxième année. J'étudie l'atmosphère de Mars à l'aide de la simulation numérique. J'analysais les résultats obtenus par simulation numérique principalement en utilisant Python, j'ai donc essayé de résumer toutes les fonctions utilisées dans le processus. Veuillez noter qu'il n'est pas exhaustif. .. .. Je viens de regarder la documentation et j'ai eu du mal à l'utiliser, alors j'espère que si quelqu'un va utiliser les outils de visualisation de Python, cela aidera!

Que pouvez-vous faire avec cet article

・ Graphique couleur (pcolor)
・ Partagez l'axe x et réglez l'axe y à droite et à gauche
・ L'axe des x est le même et les graphiques sont disposés verticalement.
・ Animation (création d'un fichier gif)

Ce qui suit sera expliqué dans un autre article (j'écrirai cette fois)

Bibliothèque à utiliser

Les bibliothèques utilisées dans cet article sont les suivantes. Il n'y a aucun problème si vous copiez et collez le code suivant sur le code pour le moment.

import matplotlib.pyplot as plt #En fait, tracer
import numpy as np #Organiser les données
from matplotlib.colors import LogNorm #barre de couleur du journal
from matplotlib import animation as animation #Créer un fichier gif

Comment utiliser le tracé de couleur (pcolor)

Qu'est-ce qu'un tracé de couleurs en premier lieu? Je pense qu'il y a beaucoup de monde, donc les données 3D sont représentées par une carte couleur 2D comme le montre le graphique ci-dessous. ~~ Parce que c'est un gros problème, j'ai un visage artistique ... lol ~~ Screen Shot 2020-03-20 at 13.26.09.png

Structure et explication du dessin graphique à l'aide de pcolor. (Veuillez copier et utiliser)

#Structure de pcolor

#1
#axe x,Préparer les données et le maillage de l'axe y
#Probablement des données 3D que vous souhaitez tracer(x,y)Je pense qu'il y a des ingrédients.
#ex) x = y = np.arange(-10, 10, 0.5)
X, Y = np.meshgrid(x, y) #Cette x,Y est len respectivement(x)*len(y)Cela devient une matrice de.

#2
#Créez Z.
#Si vous avez des données que vous souhaitez tracer
#X fait à l'étape 1,Créez une matrice Z de même taille que Y.(Faire une matrice en lisant depuis csv)
#Si non(Cet échantillon)
#Z=f(X,Y)Écrivez la fonction comme
#ex) 
Z = np.exp(-X**2-Y**2)

#S'il y a un vide dans les données et que vous souhaitez masquer la plage(Décommenter si nécessaire)
#Z = np.ma.masked_where(np.isnan(Z), Z)#Masquer aucun emplacement

#3
#terrain
fig, ax = plt.subplots(dpi=100) #dpi:résolution

#Créer une carte de couleurs
c=ax.pcolor(X,Y,Z,cmap='Carte des couleurs préférées', vmin=valeur minimum, vmax=Valeur maximum)
#c=ax.pcolor(X,Y,Z, norm=LogNorm(valeur minimum,Valeur maximum),cmap='Carte des couleurs préférées') #log échelle ver

#Ajouter une barre de couleurs
cax = fig.colorbar(c, ax=ax) #Ajouter une barre de couleurs

#Remplissez la zone masquée avec des lignes diagonales(Décommenter si nécessaire)
#ax.patch.set(hatch='x', edgecolor='black')

Je pense que c'est difficile à imaginer, donc par exemple, X dans l'exemple de code est X= Screen Shot 2020-03-20 at 14.35.07.png C'est une matrice de len (x) * len (y). Z est également une matrice de même taille et la valeur z des coordonnées (x, y) est composée comme un élément.

La fonction pcolor

c=ax.pcolor(X,Y,Z,cmap='Carte des couleurs préférées', vmin=valeur minimum, vmax=Valeur maximum)

-Cmap = 'type de carte de couleur' peut être utilisé pour spécifier la couleur à utiliser. Vous pouvez en trouver beaucoup dans ce document officiel. -Vous pouvez décider de la plage que vous souhaitez colorer vmin et vmax. Autrement dit, les pixels sont colorés avec des valeurs z de vmin à vmax.

Ceci est un exemple de code du visage écrit en pcolor.

#pcolor
from matplotlib.colors import LogNorm
import matplotlib.pyplot as plt #En fait, tracer
import numpy as np #Organiser les données

x = y = np.arange(-10, 10, 0.5)
X, Y = np.meshgrid(x, y)#Mailler et créer une matrice
#Une fonction qui exprime les yeux, le nez et la bouche du visage
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)
#Tracer avec pcolor
c=ax.pcolor(X,Y,Z, norm=LogNorm(1e-4, 1),cmap='Set3')
cax = fig.colorbar(c, ax=ax,shrink=0.9)

Partagez l'axe des x et définissez l'axe des y à droite et à gauche

C'est le graphique. Screen Shot 2020-03-18 at 23.24.28.png

Lors du partage de l'axe des x, c'est OK si la structure est la suivante. (Pour copier et coller)

fig, ax1 = plt.subplots(dpi=100)
##Écrivez le tracé ax1 ici
#ax1.plot(...)
#ax1.set_??

ax2 = ax1.twinx()#Vous pouvez maintenant partager l'axe des x!!!
##Écrivez le tracé ax2 ici
#ax2.plot(...)
#ax2.set_??

Voici l'exemple de code.

import matplotlib.pyplot as plt #En fait, tracer
import numpy as np #Organiser les données
def fun(x): 
    y = 2**x #Écrivez votre propre fonction ici
    return y
#prepare x,y data
X = np.linspace(1,10,num=100)
Y1 = fun(X)
Y2 = np.exp(X)

#Tracé pour l'axe y gauche
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")

#Tracer pour l'axe y droit
ax2 = ax1.twinx()#Vous pouvez maintenant partager l'axe des x!!!
ax2.plot(X,Y2,color='r', label=r'$y=e^x$')#terrain
ax2.set_ylabel('yaxis2')  # we already handled the x-label with ax1
ax2.set_yscale("log") #Axe y droit défini sur l'échelle logarithmique
ax2.set_ylim((1,10000))
ax2.legend(loc="upper right")

L'axe des x est le même et les graphiques sont disposés verticalement

Je veux dessiner un tel graphique! Screen Shot 2020-03-18 at 23.49.39.png

Si vous souhaitez organiser deux graphiques verticalement, vous pouvez utiliser la structure suivante.

#(1)
#Disposer verticalement deux sous-graphiques
fig, axs = plt.subplots(2,1,sharex=True,dpi=100)
#Définissez 0 entre les graphiques supérieur et inférieur et collez-les ensemble
fig.subplots_adjust(hspace=0)

#(2)
#Dessinez le graphique ci-dessus
axs[0].plot(...)

#(3)
#Dessinez le graphique ci-dessous
axs[1].plot(...)

#Mise en garde
#Le nombre de graphiques peut être modifié librement
#ex) 2,3 au lieu de 1,S'il est défini sur 1, 3 seront disposés verticalement,,,
#dpi:résolution
#sharex=S'il est défini sur False, il devient simplement un sous-tracé.

Voici l'exemple de code.


#Définissez votre fonction préférée
import matplotlib.pyplot as plt #En fait, tracer
import numpy as np #Organiser les données
def fun(x): 
    y = 2**x #Écrivez votre propre fonction ici
    return y

#prepare x,y data
X = np.linspace(1,10,num=100)
Y1 = fun(X)#Y données que vous souhaitez tracer
Y2 = np.exp(X)

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

#Graphique ci-dessus
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")

#Graphique ci-dessous
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") #Axe y droit défini sur l'échelle logarithmique
axs[1].legend(loc="upper right")

Animation (créer un fichier gif)

J'ai créé le plus simple. filename.gif

Structure et explication de la création de fichiers gif. (Pour copier et coller)

import matplotlib.pyplot as plt #En fait, tracer
import numpy as np #Organiser les données
from matplotlib import animation as animation #Créer un fichier gif

#Vous disposez probablement des données que vous souhaitez tracer et qui évoluent avec le temps
#X il,Y(t)Quand tu fais

#Tout d'abord, créez une fonction pour tracer chaque image
#Cette variable i'interval'Augmentera petit à petit
def iplot(i, args,,,):
   plt.clf()#Effacer le graphique dans l'image précédente(Supprimer si vous souhaitez conserver)
   #Dessinez un tracé image par image ici
   #À mesure que i augmente, les données à tracer changeront en conséquence.
   #ex) plt.plot(X,Y(i))

#Faites une figure comme d'habitude
fig = plt.figure(dpi=100) #dpi:résolution

#création de fichier gif
#sens:Augmentez i par intervalle pour chaque image par le nombre d'images de la fig, et tracez avec la fonction iplot.
#fargs=(,,)Spécifie un argument autre que i de la fonction iplot
#i augmente chaque intervalle
#Vous pouvez spécifier le nombre d'images à créer avec des cadres
ani = animation.FuncAnimation(fig, iplot,fargs=(args), interval = 1, frames = 50)

#enregistrer
#Spécifiez le nom du fichier
#écrire r, quelle méthode utiliser? Il n'y a pas de problème avec imagegick pour le moment
#Spécifiez le nombre d'images par seconde avec fps
ani.save('filename.gif', writer='imagemagick', fps=20)

L'exemple de code est ci-dessous.

import matplotlib.pyplot as plt #En fait, tracer
import numpy as np #Organiser les données
from matplotlib import animation as animation #Créer un fichier gif

#Préparez X et Y à tracer.
X = np.linspace(1,10,num=100)
Y = 2*X #y=2x

#Créer une fonction pour tracer chaque image
#Cette variable i(Dans la fonction d'animation ci-dessous)'interval'Augmentera petit à petit
def iplot(i,X,Y):
    plt.clf()#Sans cela, le graphique de l'image précédente reste
    plt.plot(X+i,Y)#Cette fois, y=Déplacer 2x en parallèle dans la direction x
    plt.xlim((0,60))#Définir la gamme
    plt.xlabel('xaxis')
    plt.ylabel('yaxis')
    plt.text(2,18,"y=2(x-"+str(i)+")")

fig = plt.figure(dpi=100)
#Créer un fichier gif
ani = animation.FuncAnimation(fig, iplot,fargs=(X,Y), interval = 1, frames = 50)

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

finalement

La version avancée étant devenue longue, j'écrirai l'article suivant à une date ultérieure. Contenu

est. Puis!

Recommended Posts

J'ai essayé de résumer tous les outils de visualisation Python utilisés dans la recherche par des étudiants diplômés en sciences actifs [Application]
J'ai essayé de résumer le code souvent utilisé dans Pandas
J'ai essayé de résumer les commandes souvent utilisées en entreprise
J'ai essayé de résumer les commandes utilisées par les ingénieurs débutants aujourd'hui
J'ai essayé de résumer le contenu de chaque paquet enregistré par Python pip en une seule ligne
[Python] J'ai essayé de résumer le type collectif (ensemble) d'une manière facile à comprendre.
J'ai essayé de résumer les commandes Linux utilisées par les ingénieurs débutants aujourd'hui - Partie 1-
J'ai essayé de représenter graphiquement les packages installés en Python
J'ai essayé de résumer comment utiliser les pandas de python
J'ai essayé de résumer les opérations de chaîne de Python
J'ai essayé d'implémenter la fonction d'envoi de courrier en Python
J'ai essayé de résumer ce que l'homme fort de python fait dans le quartier des professionnels de la compétition
J'ai essayé de résumer la méthode de mise en œuvre fréquemment utilisée de pytest-mock
J'ai essayé de résumer la gestion des exceptions Python
J'ai essayé d'implémenter PLSA en Python
J'ai essayé de résumer la commande umask
J'ai essayé d'implémenter la permutation en Python
J'ai essayé de résumer moi-même le flux général jusqu'à la création de services.
J'ai essayé de résumer les méthodes qui sont souvent utilisées lors de l'implémentation d'algo de base dans Quantx Factory
J'ai essayé d'implémenter PLSA dans Python 2
Entrée standard Python3 que j'ai essayé de résumer
J'ai essayé d'implémenter la régression linéaire bayésienne par échantillonnage de Gibbs en python
J'ai essayé de résumer la modélisation graphique.
J'ai essayé d'implémenter ADALINE en Python
J'ai essayé d'implémenter PPO en Python
J'ai essayé de vérifier et d'analyser l'accélération de Python par Cython
J'ai essayé d'analyser la carte du Nouvel An par moi-même en utilisant python
J'ai essayé d'organiser les index d'évaluation utilisés en machine learning (modèle de régression)
Comment lire toutes les classes contenues dans * .py dans le répertoire spécifié par Python
J'ai essayé de résumer les opérations susceptibles d'être utilisées avec numpy-stl
J'ai essayé de prédire l'évolution de la quantité de neige pendant 2 ans par apprentissage automatique
J'ai essayé d'implémenter la classification des phrases et la visualisation de l'attention par le japonais BERT avec PyTorch
[Introduction à Docker] J'ai essayé de résumer diverses connaissances Docker acquises en étudiant (Windows / Python)
J'ai essayé de simuler "Birthday Paradox" avec Python
J'ai essayé la méthode des moindres carrés en Python
J'ai essayé d'implémenter TOPIC MODEL en Python
J'ai essayé d'utiliser le module Datetime de Python
J'ai essayé d'implémenter le tri sélectif en python
LeetCode j'ai essayé de résumer les plus simples
Je veux afficher la progression en Python!
[Première science des données ⑤] J'ai essayé d'aider mon ami à trouver la première propriété par analyse de données
J'ai essayé de résumer les nouvelles personnes infectées par le virus corona dans la ville d'Ichikawa, préfecture de Chiba
[First data science ⑥] J'ai essayé de visualiser le prix du marché des restaurants à Tokyo
J'ai utilisé Python pour découvrir les choix de rôle des 51 "Yachts" dans le monde.
[Python] J'ai essayé de résumer le tableau, la méthode de génération du dictionnaire, la méthode de boucle, la notation d'inclusion de liste
J'ai essayé de résumer comment utiliser matplotlib de python
J'ai essayé de résumer la forme de base de GPLVM
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé d'implémenter un pseudo pachislot en Python
J'ai essayé d'implémenter le poker de Drakue en Python
J'ai essayé d'implémenter GA (algorithme génétique) en Python
[Python] J'ai essayé de représenter graphiquement le top 10 des ombres à paupières
Je veux écrire en Python! (3) Utiliser des simulacres
J'ai essayé de résoudre le problème avec Python Vol.1
Je veux utiliser le jeu de données R avec python
Python Open CV a essayé d'afficher l'image sous forme de texte.
Django super introduction par les débutants Python! Partie 6 J'ai essayé d'implémenter la fonction de connexion
J'ai aussi essayé d'imiter la fonction monade et la monade d'état avec le générateur en Python
J'ai essayé de résumer les langues que les débutants devraient désormais apprendre par but