Vous le verrez souvent en utilisant des services d'analyse tels que la fidélisation des utilisateurs et PartyTrack, qui sont l'un des indicateurs indispensables pour exécuter des applications mobiles. Cependant, dans certains cas, vous souhaitez dessiner un graphique avec vos propres données, mais vous ne souhaitez pas écrire du JavaScript sur le front Web.
La prochaine entrée que j'ai vue à ce moment-là
Making Pinterest — How Pinterest drives sustainable growth http://engineering.pinterest.com/post/86533331849/how-pinterest-drives-sustainable-growth
La carte thermique de la cohorte est dessinée avec quelque chose !! Alors, dessinons un graphique avec la même apparence en Python.
Supposons que vous ayez "le taux actif z de l'utilisateur acquis le x un jour après y jours" sous la forme suivante.
{
"2014/08/16": [Valeur du jour suivant],
"2014/08/15": [Valeur du jour suivant,Valeur après 2 jours],
"2014/08/14": [Valeur du jour suivant,Valeur après 2 jours,Valeur après 3 jours],
"2014/08/13": [Valeur du jour suivant,Valeur après 2 jours,Valeur après 3 jours,Valeur après 4 jours],
...
}
Tout d'abord, créez un maillage avec la date d'acquisition x et les jours écoulés y de la même manière que pour le traçage des courbes de niveau.
from datetime import datetime
from matplotlib import dates
import numpy as np
vals = [
datetime(2014, 8, 16), [0.524],
datetime(2014, 8, 15), [0.574, 0.415],
datetime(2014, 8, 14), [0.559, 0.440, 0.355],
#Abréviation
]
#Jours écoulés à afficher
max_y = 35
#x est converti de datetime en nombre
x = map(lambda v: dates.date2num(v['date']), vals)
#y vaut 1(le prochain jour)Commencer à partir de
y = np.arange(1, max_y + 1)
#Créer un maillage x et y
Y, X = np.meshgrid(y, x)
La valeur du taux de rétention étant z, ajustez la longueur du tableau à y de la grille.
def expand_z(v):
v = v['values']
v += list(np.zeros(max_y - len(v)))
return v
#Ajouter un tableau rempli de zéro pour aligner verticalement et horizontalement
z = map(expand_z, vals)
#Convertir en une matrice numpy
Z = np.array(z).reshape(len(z), len(z[0]))
Dessinez un pseudo tracé de couleurs à l'aide de pcolor.
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(8, 4))
#Créer un tracé
#Spécifiez la valeur maximale pour éviter que la couleur ne change en fonction des données
im = ax.pcolor(X, Y, Z, vmax=0.6)
#Titre
ax.set_title(u'Launch Retention')
#axe y
ax.set_ylabel(u'Past Days')
ax.set_ylim(bottom=1)
#axe x
ax.set_xlim(x[0], x[-1])
#Barre de couleur
plt.colorbar(im)
# Ticks
minorLocator = MultipleLocator(5)
ax.xaxis.set_minor_locator(dates.DayLocator())
ax.xaxis.set_minor_formatter(dates.DateFormatter('%d'))
ax.xaxis.set_major_locator(dates.MonthLocator())
ax.xaxis.set_major_formatter(dates.DateFormatter('%Y %b'))
ax.xaxis.set_tick_params(which='major', pad=17)
plt.xticks(rotation=0)
plt.show()
l'a fait. Il peut être utilisé pour voir le sentiment dans son ensemble. Si vous souhaitez suivre la rétention après une journée sous forme d'index, il est plus facile d'observer la progression si vous créez un graphique linéaire séparé ou quelque chose pour cette valeur. Dans tous les cas, si vous créez un fichier image par traitement par lots la nuit, vous pouvez l'utiliser n'importe où et c'est pratique.
Nous avons également préparé un résumé pour que vous puissiez exécuter ce code à portée de main, si vous souhaitez l'exécuter à portée de main, veuillez cliquer ici. https://gist.github.com/hagino3000/455a68a79173fff1d890
Recommended Posts