Sie werden häufig feststellen, dass Analysedienste wie Benutzerbindung und PartyTrack verwendet werden, die einer der unverzichtbaren Indikatoren für die Ausführung mobiler Anwendungen sind. Es gibt jedoch Fälle, in denen Sie ein Diagramm mit Ihren eigenen Daten zeichnen möchten, aber kein JavaScript im Web schreiben möchten.
Der nächste Eintrag, den ich damals gesehen habe
Making Pinterest — How Pinterest drives sustainable growth http://engineering.pinterest.com/post/86533331849/how-pinterest-drives-sustainable-growth
Die Kohorten-Heatmap wird mit etwas gezeichnet !! Zeichnen wir also ein Diagramm mit dem gleichen Erscheinungsbild in Python.
Angenommen, Sie haben "die aktive Rate z des Benutzers, die an x einen Tag nach y Tagen erfasst wurde" in der folgenden Form.
{
"2014/08/16": [Wert für den nächsten Tag],
"2014/08/15": [Wert für den nächsten Tag,Wert nach 2 Tagen],
"2014/08/14": [Wert für den nächsten Tag,Wert nach 2 Tagen,Wert nach 3 Tagen],
"2014/08/13": [Wert für den nächsten Tag,Wert nach 2 Tagen,Wert nach 3 Tagen,Wert nach 4 Tagen],
...
}
Erstellen Sie zunächst ein Netz mit dem Erfassungsdatum x und den verstrichenen Tagen y auf die gleiche Weise wie beim Zeichnen von Konturlinien.
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],
#Abkürzung
]
#Verstrichene Tage für die Anzeige
max_y = 35
#x wird von datetime in number konvertiert
x = map(lambda v: dates.date2num(v['date']), vals)
#y ist 1(nächster Tag)Beginne am
y = np.arange(1, max_y + 1)
#Erstellen Sie ein x- und ein y-Netz
Y, X = np.meshgrid(y, x)
Da der Wert für die Aufbewahrungsrate z ist, passen Sie die Länge des Arrays an y des Gitters an.
def expand_z(v):
v = v['values']
v += list(np.zeros(max_y - len(v)))
return v
#Fügen Sie ein mit Nullen aufgefülltes Array hinzu, um es vertikal und horizontal auszurichten
z = map(expand_z, vals)
#In eine Numpy-Matrix konvertieren
Z = np.array(z).reshape(len(z), len(z[0]))
Zeichnen Sie mit pcolor ein Pseudofarbdiagramm.
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(8, 4))
#Plot erstellen
#Geben Sie den Maximalwert an, um zu vermeiden, dass sich die Farbe abhängig von den Daten ändert
im = ax.pcolor(X, Y, Z, vmax=0.6)
#Titel
ax.set_title(u'Launch Retention')
#y-Achse
ax.set_ylabel(u'Past Days')
ax.set_ylim(bottom=1)
#x-Achse
ax.set_xlim(x[0], x[-1])
#Farbbalken
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()
erledigt. Es kann verwendet werden, um das ganze Gefühl zu sehen. Wenn Sie die Aufbewahrung nach einem Tag als Index verfolgen möchten, ist es einfacher, den Fortschritt zu beobachten, wenn Sie ein separates Liniendiagramm oder etwas für diesen Wert erstellen. Wenn Sie eine Bilddatei nachts durch Stapelverarbeitung erstellen, können Sie sie in jedem Fall überall verwenden, und das ist praktisch.
Wir haben auch eine Übersicht vorbereitet, damit Sie diesen Code sofort ausführen können. Wenn Sie ihn sofort ausführen möchten, klicken Sie bitte hier. https://gist.github.com/hagino3000/455a68a79173fff1d890
Recommended Posts