[PYTHON] Implementieren Sie "Data Visualization Design # 2" mit matplotlib

Was ist ein Datenvisualisierungsdesign?

Dies ist eine Zusammenfassung der Punkte der Datenvisualisierung, die in der Notiz von Go Ando von THE GUILD veröffentlicht wurden, der für Dienste bekannt ist, die sich auf UX und UI konzentrieren.

https://note.mu/goando/n/n4a2735c3d69d

# 1?

https://qiita.com/skotaro/items/cdb0732ad1ad2a4b6236

Vorsichtsmaßnahmen

plt.rcParams['font.family'] = 'Hiragino Sans'  

Es ist der Teil von.

8. Verwenden Sie nicht die 2. Achse

picture_pc_35cbe51d3cf1f3331ad189ac806eae85.png

#Bibliotheksimport
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from matplotlib.ticker import MultipleLocator


#Daten
mau = [450,480,500,470,520,550,530,580,620,700,690,720]
g_rate = [0,8,0,-4,10,9,-6,12,4,12,-1,8]
g_rate = [one/100 for one in g_rate]
timeindex = pd.date_range('2019/1', periods=12, freq='MS')
mau = pd.Series(mau, index=timeindex, name='MAU(M)')
g_rate = pd.Series(g_rate,index=timeindex,name='Wachstumsrate im letzten Monat')

#Zur Fehlervermeidung bei Pandas
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

#Schriftarteinstellungen
plt.rcParams['font.family'] = 'Hiragino Sans'  
plt.rcParams['font.weight'] = 'heavy'

#Auf und ab geteilt
fig = plt.figure(figsize=(8,5))
ax1 = fig.add_subplot(2, 1, 1)
ax2 = fig.add_subplot(2, 1, 2)

# 1.Ändern Sie die Balkenfarbe und -breite
ax1.plot(g_rate.index, g_rate,linewidth=5.,color="saddlebrown")
ax2.bar(mau.index, mau, width=20., color='darkorange', zorder=2, align='center')

# 2.Zeigen Sie die Beschriftung der y-Achse an, geben Sie Farbe und Schriftgröße an
ax1.set_ylabel(g_rate.name,color="saddlebrown",fontsize=14,fontweight='bold')
ax2.set_ylabel(mau.name, color='gray',fontsize=14,fontweight='bold')

# 3.Ändern Sie die Tick-Position auf der y-Achse
ax1.yaxis.set_major_locator(MultipleLocator(500))
ax2.yaxis.set_major_locator(MultipleLocator(500))

# 4.Löschen Sie die Häkchen auf der x- und der y-Achse,Löschen Sie für das obige Diagramm alle x-Achsen
ax1.tick_params(labelbottom="off",bottom=False, left=False) 
ax1.set_xticklabels([]) 
ax2.tick_params(bottom=False, left=False)

# 5.Ändern Sie die Farbe der Markierung der x-Achse und der y-Achse
ax1.tick_params(axis='y', colors='dimgray')
ax2.tick_params(axis='x', colors='dimgray')
ax2.tick_params(axis='y', colors='dimgray')

# 6.Y-Achsengitter anzeigen, Farbe schwarz für das obige Diagramm
ax1.grid(axis='y',color="black")
ax2.grid(axis='y')

# 7.Löschen Sie den rechten Rahmen
ax1.spines['right'].set_visible(False)
ax2.spines['right'].set_visible(False)

# 8.Ändern Sie die Farbe des Rahmens
ax1.spines['bottom'].set_color('dimgray')
ax1.spines['top'].set_color('dimgray')
ax1.spines['left'].set_color('dimgray')
ax2.spines['bottom'].set_color('dimgray')
ax2.spines['top'].set_color('dimgray')
ax2.spines['left'].set_color('dimgray')

# 9.Setzen Sie das Häkchen für die x-Achse nur auf Monat
# '%-m'Führt die Strftime-Null-Notation ohne Monat?
ax2.xaxis.set_major_formatter(mdates.DateFormatter('%-m')) 

# 10.Stellen Sie die Position der x-Achse jeden Monat ein
ax2.xaxis.set_major_locator(mdates.MonthLocator())
ax2.xaxis.set_tick_params(labelsize=12)

#Die Position des Hauptstrichs wird nicht aktualisiert, es sei denn, die Feige wird einmal gezeichnet.
fig.canvas.draw()

# 11.Festlegen des Bereichs der vertikalen Achse
ax1.set_ylim(-0.20,0.20)
ax2.set_ylim(0,800)
    
# 12.Änderung der vertikalen Achse ankreuzen
vals_1 = [-0.2,0,0.2]
ax1.set_yticks(vals_1)
ax1.set_yticklabels(['{:,.0%}'.format(x) for x in vals_1],color="saddlebrown",fontsize=12,fontweight='bold')
vals_2 = [0,400,800]
ax2.set_yticks(vals_2)
ax2.set_yticklabels(['{}'.format(x) for x in vals_2] ,fontsize=12,fontweight='bold')

# 13.Richten Sie ylabel aus
axs = [ax1,ax2]
fig.align_ylabels(axs)

temp_5.png

Um zu erfahren, wie die vertikale Achse in # 12 auf% gesetzt wird, habe ich auf die Antwort vom Stapelüberlauf [^ 1] verwiesen.

13. verwies auf das offizielle Dokument von matplotlib [^ 2].

Das y-Label kann auch vertikal geschrieben werden, indem jedes Zeichen gebrochen wird, aber ich habe es nicht getan, weil der Code hässlich war. (Bitte sagen Sie mir, ob es einen klugen Weg gibt)

9. Reduzieren Sie die Elemente auf ein Minimum

picture_pc_a37bd978a068d0840f04250ca5b05a3a.png

#Daten
shipment_n = pd.DataFrame([52217, 9113, 4078],
                           index=['iPhone', 'iPad', 'Mac'],
                           columns=['amount'])

fig, ax = plt.subplots(figsize=(6, 3))
ax.bar(shipment_n.index,shipment_n["amount"])

# 1.Löschen Sie den anderen Rahmen als den unteren
sides = ['left','right', 'top']
[ax.spines[side].set_visible(False) for side in sides] 

# 2.Ändern Sie die Farbe des unteren Rahmens in Grau
ax.spines['bottom'].set_color("dimgray")

# 3.Löschen Sie das Häkchen auf der y-Achse
ax.tick_params(left=False, labelleft=False)

# 4.Größere Etikettengröße auf der x-Achse, graue Farbe
ax.tick_params(axis='x', labelsize='xx-large',color="dimgray",labelcolor="dimgray")

# 5.Zeige den tatsächlichen Wert über dem Balken
vmax = shipment_n['amount'].max()
for i, value in enumerate(shipment_n['amount']):
    ax.text(i, value+vmax*0.06, f'{value:,}', fontsize='xx-large', va='center', ha='center', color='C0')

tmp6.png

4 wird durch Anwenden eines Offsets mit vmax realisiert.

10. Schreiben Sie die größte Schlüsselbotschaft

picture_pc_c0ccda82a2e6153a56d22b40e1f7d12b.png

#Farbe
ori_blue = "#3674b3"
ori_lightblue = "#b3daff"


# 1.Malen Sie das Ganze
plt.rcParams["axes.facecolor"] = (1,1,1,0)

# 2.Machen Sie den Hintergrund blau
fig, ax = plt.subplots(figsize=(6, 4),facecolor=ori_blue)

# 3.Titel
fig.suptitle("Das iPhone macht 80% der Sendungen aus",color="white",size=24,fontweight='bold',ha='center')

# 4.Grundstück in hellblau
ax.bar(shipment_n.index,shipment_n["amount"],color=ori_lightblue)

# 5.Fügen Sie eine Beschreibung hinzu
ax.text(-0.4,shipment_n["amount"].max()*1.2,"Grafik: 2017 Apple Versandgeräte",color=ori_lightblue,fontsize=12)

#6.Löschen Sie andere Frames als unten
sides = ['left','right', 'top']
[ax.spines[side].set_visible(False) for side in sides] 

# 7.Farbeinstellung des unteren Rahmens
ax.spines['bottom'].set_color(ori_lightblue)

# 8.Einstellung des y-Achsenbereichs
ax.set_ylim(0,80000)

# 9.Löschen Sie das Häkchen der y-Achse
ax.tick_params(left=False, labelleft=False)
    
# 10.Einstellung der Beschriftung der x-Achse
ax.tick_params(axis='x', labelsize='xx-large',color=ori_lightblue,labelcolor=ori_lightblue)

# 11.Zeige den tatsächlichen Wert über dem Balken
vmax = shipment_n['amount'].max()
for i, value in enumerate(shipment_n['amount']):
    ax.text( i,value+vmax*0.06, f'{value:,}', fontsize='xx-large', va='center', ha='center', color=ori_lightblue)

#Beim Speichern
plt.savefig("savefig_with_facecolor.png ",facecolor=fig.get_facecolor())

tmp8.png

Über die Farbe habe ich es irgendwie eingestellt. In der Kopffamilie waren die Ecken des Hintergrunds abgerundet, dies konnte jedoch nicht reproduziert werden. (Ich bin auch nach einigem Überprüfen nicht herausgekommen ...) Beim Speichern mit plt.savefig () muss die Hintergrundfarbe mit facecolor = [^ 3] angegeben werden.

Recommended Posts

Implementieren Sie "Data Visualization Design # 2" mit matplotlib
Implementieren Sie "Data Visualization Design # 3" mit Pandas und Matplotlib
Datenvisualisierung mit Pandas
Zeichnen Sie Excel-Daten mit matplotlib (1)
Zeichnen Sie Excel-Daten mit matplotlib (2)
Datenvisualisierungsmethode mit Matplotlib (1)
Datenvisualisierungsmethode mit Matplotlib (2)
Datenvisualisierungsmethode mit Matplotlib (+ Pandas) (5)
Vielseitige Datenerfassung mit Pandas + Matplotlib
Datenvisualisierungsmethode mit Matplotlib (+ Pandas) (3)
Visualisieren Sie Ihre Daten ganz einfach mit Python Seaborn.
Datenvisualisierungsmethode mit Matplotlib (+ Pandas) (4)
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
Trennung von Design und Daten in matplotlib
Empfehlung von Altair! Datenvisualisierung mit Python
Animation mit matplotlib
Japanisch mit Matplotlib
Animation mit matplotlib
Histogramm mit Matplotlib
Erstellen Sie eine Animation mit matplotlib
Visualisieren Sie Korona-Infektionsdaten in Tokio mit matplotlib
Lesen Sie Python-CSV-Daten mit Pandas ⇒ Graph mit Matplotlib
Datenanalyse mit Python 2
2-Achsen-Plot mit Matplotlib
Implementieren Sie FReLU mit tf.keras
Daten mit TensorFlow lesen
Übersicht und Tipps von Seaborn mit statistischer Datenvisualisierung
Heatmap von Python + matplotlib
Lernen Sie mit Chemo Informatics Matplotlib
Datenmanipulation mit Pandas!
Daten mit Pandas mischen
Verschiedene Farbleisten mit Matplotlib
Daten mit Scipy normieren
Datenanalyse mit Python
Visualisierung der Logistik mit Python
LADEN SIE DATEN mit PyMysql
Stellen Sie die Achsen mit matplotlib ein
Erste Schritte mit dem Zeichnen mit matplotlib: Erstellen von Diagrammen aus Datendateien
Implementieren Sie die Normalisierung der Vorverarbeitung von Python-Trainingsdaten mit scicit-learn [fit_transform].
[Kausale Suche / kausale Folgerung] Implementieren Sie ein basianisches Netzwerk mit Titanic-Daten
Mit Python erstellte Beispieldaten
Implementieren Sie die Anmeldefunktion mit django-allauth
Betten Sie Audiodaten in Jupyter ein
Künstliche Datengenerierung mit Numpy
Implementieren Sie Unterbefehle mit Pythons Argparse
Extrahieren Sie Twitter-Daten mit CSV
Versuchen Sie es mit matplotlib mit PyCharm
Holen Sie sich Youtube-Daten mit Python
Diagrammzeichnungsmethode mit matplotlib
Lernen Sie neue Daten mit PaintsChainer
Visualisierung von Daten nach Präfektur
Binarisieren Sie Fotodaten mit OpenCV
Implementieren Sie PyTorch + GPU mit Docker
Verwenden Sie Django, um Tweet-Daten zu speichern
Stapelbares Barplot mit Matplotlib
[Qt Designer] Implementieren Sie WebView mit PyQt5
Wählen Sie mit matplotlib abgestufte Farben aus
Animieren Sie mehrere Diagramme mit matplotlib
Datenverarbeitungstipps mit Pandas