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
https://qiita.com/skotaro/items/cdb0732ad1ad2a4b6236
plt.rcParams['font.family'] = 'Hiragino Sans'
Es ist der Teil von.
#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)
Um zu erfahren, wie die vertikale Achse in # 12 auf% gesetzt wird, habe ich auf die Antwort vom Stapelüberlauf [^ 1] verwiesen.
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)
#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')
#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())
Ü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