Ceci est un résumé des points de visualisation de données publié en note par Go Ando de THE GUILD, qui est célèbre pour ses services axés sur l'UX et l'interface utilisateur.
https://note.mu/goando/n/n4a2735c3d69d
https://qiita.com/skotaro/items/cdb0732ad1ad2a4b6236
plt.rcParams['font.family'] = 'Hiragino Sans'
C'est la partie de.
#Importation de bibliothèque
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from matplotlib.ticker import MultipleLocator
#Les données
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='Taux de croissance du mois dernier')
#Pour éviter les erreurs chez les pandas
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
#Paramètres de police
plt.rcParams['font.family'] = 'Hiragino Sans'
plt.rcParams['font.weight'] = 'heavy'
#Divisé de haut en bas
fig = plt.figure(figsize=(8,5))
ax1 = fig.add_subplot(2, 1, 1)
ax2 = fig.add_subplot(2, 1, 2)
# 1.Changer la couleur et la largeur de la barre
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.Afficher l'étiquette de l'axe y, spécifier la couleur et la taille de la police
ax1.set_ylabel(g_rate.name,color="saddlebrown",fontsize=14,fontweight='bold')
ax2.set_ylabel(mau.name, color='gray',fontsize=14,fontweight='bold')
# 3.Changer la position de graduation sur l'axe y
ax1.yaxis.set_major_locator(MultipleLocator(500))
ax2.yaxis.set_major_locator(MultipleLocator(500))
# 4.Effacer les graduations des axes x et y,Pour le graphique ci-dessus, effacez tout l'axe des x
ax1.tick_params(labelbottom="off",bottom=False, left=False)
ax1.set_xticklabels([])
ax2.tick_params(bottom=False, left=False)
# 5.Changer la couleur de l'étiquette de graduation de l'axe des x sur l'axe des y
ax1.tick_params(axis='y', colors='dimgray')
ax2.tick_params(axis='x', colors='dimgray')
ax2.tick_params(axis='y', colors='dimgray')
# 6.Afficher la grille de l'axe y, couleur noire pour le graphique ci-dessus
ax1.grid(axis='y',color="black")
ax2.grid(axis='y')
# 7.Effacer le cadre droit
ax1.spines['right'].set_visible(False)
ax2.spines['right'].set_visible(False)
# 8.Changer la couleur du cadre
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.Définir l'étiquette de graduation de l'axe des x sur le mois uniquement
# '%-m'Est-ce que strftime mène la notation zéro aucun mois
ax2.xaxis.set_major_formatter(mdates.DateFormatter('%-m'))
# 10.Définissez la position de graduation sur l'axe X tous les mois
ax2.xaxis.set_major_locator(mdates.MonthLocator())
ax2.xaxis.set_tick_params(labelsize=12)
#La position de la graduation principale n'est mise à jour que si la figure est dessinée une fois.
fig.canvas.draw()
# 11.Spécification de la plage de l'axe vertical
ax1.set_ylim(-0.20,0.20)
ax2.set_ylim(0,800)
# 12.Changement de graduation de l'axe vertical
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.Aligner ylabel
axs = [ax1,ax2]
fig.align_ylabels(axs)
Pour savoir comment définir l'axe vertical sur% dans # 12., je me suis référé à la réponse de stackoverflow [^ 1].
De plus, l'étiquette y peut être écrite verticalement en cassant chaque caractère, mais je ne l'ai pas fait car le code était laid. (S'il vous plaît dites-moi s'il existe un moyen intelligent)
#Les données
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.Effacer le cadre autre que le bas
sides = ['left','right', 'top']
[ax.spines[side].set_visible(False) for side in sides]
# 2.Changer la couleur du cadre inférieur en gris
ax.spines['bottom'].set_color("dimgray")
# 3.Effacer la graduation de l'axe y
ax.tick_params(left=False, labelleft=False)
# 4.Taille d'étiquette de l'axe X plus grande, couleur grise
ax.tick_params(axis='x', labelsize='xx-large',color="dimgray",labelcolor="dimgray")
# 5.Afficher la valeur réelle au-dessus de la barre
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')
#Couleur
ori_blue = "#3674b3"
ori_lightblue = "#b3daff"
# 1.Peindre le tout
plt.rcParams["axes.facecolor"] = (1,1,1,0)
# 2.Rendre le fond bleu
fig, ax = plt.subplots(figsize=(6, 4),facecolor=ori_blue)
# 3.Titre
fig.suptitle("L'iPhone représente 80% des expéditions",color="white",size=24,fontweight='bold',ha='center')
# 4.Terrain en bleu clair
ax.bar(shipment_n.index,shipment_n["amount"],color=ori_lightblue)
# 5.ajouter une description
ax.text(-0.4,shipment_n["amount"].max()*1.2,"Graphique: Appareils d'expédition Apple 2017",color=ori_lightblue,fontsize=12)
#6.Supprimer les cadres autres que ceux du bas
sides = ['left','right', 'top']
[ax.spines[side].set_visible(False) for side in sides]
# 7.réglage de la couleur du cadre inférieur
ax.spines['bottom'].set_color(ori_lightblue)
# 8.réglage de la plage de l'axe y
ax.set_ylim(0,80000)
# 9.Effacer l'étiquette de graduation de l'axe y
ax.tick_params(left=False, labelleft=False)
# 10.paramètre d'étiquette de l'axe x
ax.tick_params(axis='x', labelsize='xx-large',color=ori_lightblue,labelcolor=ori_lightblue)
# 11.Afficher la valeur réelle au-dessus de la barre
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)
#Lors de la sauvegarde
plt.savefig("savefig_with_facecolor.png ",facecolor=fig.get_facecolor())
À propos de la couleur, je l'ai réglée d'une manière ou d'une autre. Dans la famille de tête, les coins du fond étaient arrondis, mais cela ne pouvait pas être reproduit. (Je ne suis pas sorti même après l'avoir vérifié un peu ...) De plus, lors de l'enregistrement avec plt.savefig (), il est nécessaire de spécifier la couleur d'arrière-plan avec facecolor = [^ 3].
Recommended Posts