Créez un tracé de R semblable à un joyplot avec python

1. Qu'est-ce que joyplot?

joyplot est un complot comme celui-ci dont on a parlé sur Twitter il y a quelque temps.

Cela semble facile à tracer avec le package de R ggjoy. Il ne semblait y avoir rien de similaire en python.

Au fait, la raison pour laquelle joy plot est que la pochette de l'album "Unknown Pleasures" du groupe Joy Division ressemble à celle ci-dessous. pulsar_detail.jpg

Ainsi, lors de l'utilisation de ce joyplot, il semble poli de tracer en écoutant this. (Est un mensonge)

2. Environnement

3. Génération de données

En regardant ce tracé, j'ai pensé qu'il serait utile pour mettre à jour Bayes et tracer le spectrogramme, donc cette fois je vais essayer le tracé du spectrogramme pour le moment. Utilisez l 'exemple du spectre scipy tel quel.

from scipy import signal
import matplotlib.pyplot as plt
fs = 10e3
N = 1e5
amp = 2 * np.sqrt(2)
noise_power = 0.01 * fs / 2
time = np.arange(N) / float(fs)
mod = 500*np.cos(2*np.pi*0.25*time)
carrier = amp * np.sin(2*np.pi*3e3*time + mod)
noise = np.random.normal(scale=np.sqrt(noise_power), size=time.shape)
noise *= np.exp(-time/5)
data = carrier + noise

f, t, Sxx = signal.spectrogram(data, fs, nperseg=1000, noverlap=900)

4. Tracé

Je me réfère à ici dans stackoverflow.


y = Sxx.T

#Puisqu'il y en a beaucoup, tranchez-le.
y_subset_num = 10
x_subset_num = 20
y = y[0:y_subset_num, 0:x_subset_num]
ny, nx = y.shape 
x = f[0:x_subset_num]

y_delta = (y.max() - y.min()) / ny #Ce y=Tracer en décalant par delta.
yticks = [] #Pour enregistrer la position des yticks

fig = plt.figure()
ax = fig.add_subplot(111)

for iy in np.arange(ny):
    offset = (ny-iy) * y_delta #Tracer de haut en bas
    y_value = y[iy] + offset #Décalage par décalage.
    ax.plot(x, y_value, color='w', lw=1, zorder=iy)
    ax.fill_between(x=x, y1=y_value, y2=offset, alpha=0.5, lw=0, zorder=iy, color="red")
    # y_Tracez la ligne de valeur et peignez en dessous.
    yticks.append(offset)

#Le haut de l'intrigue est plus jeune, alors inversez l'ordre.
yticks = yticks[::-1]
ytickslabel = np.arange(len(yticks))[::-1]

ax.set_yticks(yticks)
ax.set_yticklabels(ytickslabel)

ax.set_xlabel("Frequency [Hz]")
plt.show()

figure_1.png

Je me sens comme cela. Pour le rendre beau, vous devez faire quelques ajustements. Vous devez changer autour de y_delta``` dans le code ci-dessus.

5. Enfin (ajouté le 26 août 2017)

J'ai découvert que joyplot avait été ajouté à l'exemple Seaborn le mois dernier. https://github.com/mwaskom/seaborn/blob/master/examples/kde_joyplot.py

figure_1.png

Nous avons également trouvé joypy. temperatures.png

Il serait préférable d'utiliser l'un ou l'autre de ces deux.

Recommended Posts

Créez un tracé de R semblable à un joyplot avec python
Copiez la liste en Python
Créer un tableau de multiplication de chaque élément dans une feuille de calcul (Python)
Afficher une liste d'alphabets en Python 3
Créer un diagramme de relations des modules Python
Faisons un calcul de combinaison avec Python
Dessiner un graphique d'une fonction quadratique en Python
Récupérer l'appelant d'une fonction en Python
Réécrire des éléments dans une boucle de listes (Python)
Créez un jeu Janken en une seule ligne (python)
Sortie sous la forme d'un tableau python
Touchons une partie de l'apprentissage automatique avec Python
Environnement enregistré pour l'analyse des données avec Python
Essayez de créer un module Python en langage C
Faire une copie d'un fichier Google Drive à partir de Python
Une collection de code souvent utilisée dans Python personnel
Créez un Slackbot simple avec un bouton interactif en python
Regrouper par éléments consécutifs d'une liste en Python
Afficher un histogramme des valeurs de luminosité de l'image en python
Un mémorandum sur la mise en œuvre des recommandations en Python
Prendre une capture d'écran en Python
Créer une fonction en Python
Jugement d'équivalence d'objet en Python
Ne faites pas test.py en Python!
Faites une loterie avec Python
Rendre Opencv disponible en Python
Segfo python en 2 lignes
Dessinez un cœur en Python
Implémentation du tri rapide en Python
Tracer des informations géographiques en Python
Découvrez la largeur apparente d'une chaîne en python
[Python] Comment créer une liste de chaînes de caractères caractère par caractère
Obtenez le nombre d'éléments spécifiques dans la liste python
Faisons un service de vente au comptant 4 (en Python mini Hack-a-thon)
[Note] Importation de fichiers dans le répertoire parent en Python
Comment obtenir une liste d'exceptions intégrées pour python
Un mémo que j'ai écrit une fonction de base en Python en utilisant la récurrence
Comparaison de la gestion des trames de données en Python (pandas), R, Pig
J'ai fait un chronomètre en utilisant tkinter avec python
Un ensemble de fichiers de script qui font wordcloud avec Python3
Trouver les valeurs propres d'une vraie matrice symétrique en Python
Je veux ajouter un joli complément à input () en python
Une histoire que je voulais faire quand j'ai eu une liste de sessions d'étude avec Python
Un enregistrement de patcher un package python
Probablement dans un serpent Nishiki (Titre original: Peut-être en Python)
Ecrire une dichotomie en Python
Segfo python en une ligne
Une bonne description des décorateurs Python
[python] Gérer les fonctions dans une liste
Appuyez sur une commande en Python (Windows)
Créer un conteneur DI avec Python
Faisons une interface graphique avec python.
Exécutez la commande shell / Python dans R
[Python] Un mémorandum de belle soupe4
Dessinez une matrice de diagramme de dispersion avec python
Diviser timedelta dans la série Python 2.7
Un bref résumé de la collection Python
ABC166 en Python A ~ C problème
Échappement automatique des paramètres MySQL en python