[PYTHON] Zeichnen Sie mit Matplotlib ein Diagramm der Retentionsrate

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.

Daten zur Aufbewahrungsrate

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],
	...
}

Zeichnen eines Diagramms

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

Ergebnis

plot.png

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

Zeichnen Sie mit Matplotlib ein Diagramm der Retentionsrate
Zeichnen Sie ein Diagramm mit Python
Zeichnen Sie mit matplotlib ein loses Diagramm
So zeichnen Sie ein Diagramm mit Matplotlib
Zeigen Sie das xy-Diagramm von Matplotlib mit PySimpleGUI an.
(Matplotlib) Ich möchte ein Diagramm mit einer in Pixel angegebenen Größe zeichnen
matplotlib graph album
Zeichnen Sie eine flache Oberfläche mit einem Matplotlib-3D-Diagramm
Zeichnen Sie in Python ein Diagramm einer quadratischen Funktion
Zeichnen Sie in Jupyter ein Diagramm mit japanischen Beschriftungen
Zeichnen Sie eine "Boobs-Kurve" in einem 3D-Diagramm (1).
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
Zeichnen Sie eine "Boobs-Kurve" in einem 3D-Diagramm (2).
Zeichnen Sie mehrere Fotos in einem Diagramm aus mehreren Ordnern
Legen Sie matplotlib in Centos7.
Zeichne ein Diagramm mit Julia ... Ich habe eine kleine Analyse versucht
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
Diagrammzeichnung mit matplotlib
Diagrammzeichnung mit Python
Bilder mit Matplotlib anzeigen
Banddiagramm mit Matplotlib
2D-Plot in Matplotlib
Mathematik mit Python studieren: Zeichnen Sie mit matplotlib ein Sympy-Diagramm (Scipy-Diagramm)
Verarbeitung mehrerer Dateien mit Kivy + Matplotlib + Draw Graph auf der GUI
SVG-Diagramm mit matplotlib mit Heroku erstellen (auf Japanisch angezeigt)
Zeichnen Sie Zeitreihendaten in Python mit Pandas und Matplotlib
Zeichnen Sie mit NetworkX ein Diagramm
Betten Sie das Matplotlib-Diagramm in Tkinter ein
Zeichnen Sie die Festplatte von Poancare in Python
Diagrammzeichnungsmethode mit matplotlib
Zeichnen Sie Excel-Daten mit matplotlib (2)
Zeichnen Sie "Farn programmgesteuert zeichnen" in Python
Zeichne die Yin-Funktion in Python
Echtzeit-Diagrammanzeige von matplotlib
Änderungen der Coronavirus-Infektionsrate
Zeichne ein Herz in Python
Zeichnen Sie mit networkx ein Diagramm