Comparer Excel et dessiner des gaufres en python

Appelez - moi frère. 2022-01-15 03:55:53 阅读数:90

comparer excel et dessiner des

Bonjour tout le monde,C'est moi..

Gaufres(Waffle Chart),Ou Diagramme circulaire à angle droit,Vous pouvez visualiser le pourcentage d'achèvement.Comparaison avec les diagrammes circulaires traditionnels,Pourcentage de gaufres exprimés plus clairement et plus précisément,Chaque grille représente 1%.L'application typique d'un diagramme à secteurs gaufres est de comparer les proportions d'achèvement des mêmes types d'indicateurs..Par exemple,Achèvement des travaux,Progrès des recettes annuelles, etc..

1. ExcelDessiner des gaufres

En fait...,AvecexcelIl existe de nombreuses façons de dessiner des gaufres,Ce qui est plus compliqué, c'est la mise en œuvre de la spécification de réglage de l'histogramme après l'insertion de l'histogramme.;Une autre opération plus simple est de prendreFormat des cellulesForme,C'est ce que nous allons présenter aujourd'hui..

1.1. Aperçu des effets

excelEffet de peinture

1.2. Étapes de mise en oeuvre

Sélectionnez d'abord10*10Total100Intervalle de cellules,Et puis vous mettez la celluleLes pixels largeur et hauteur sont égauxValeur de,La valeur que nous définissons ici est25Pixels

Définir la hauteur de la cellule&Large

Puis nous avons commencé à partir deGauche.—>A droiteEn bas.—>Allez. Remplissez les chiffres 1-100

 Remplissez les chiffres 1-100

Pour afficher les valeurs de progression , Nous entrons les valeurs en bas (Voici66%Par exemple),Puis sélectionnez10*10 La zone numérique de Format conditionnelParamètres—>Jeu d'icônes—>Forme

Formatage conditionnel

Enfin, saisissez à nouveau les règles de gestion sélectionnées dans le formatage conditionnel pour définir les règles détaillées. , Cliquez sur les règles spécifiques Cliquez sur modifier la règle Ou double - cliquez directement sur la règle spécifique

Modifier les règles

Les règles spécifiques sont les suivantes::

  • Sélection du type Formule
  • La valeur de la cellule dépasse la valeur spécifiée (Ici.C13Cellule66%*100) Il sera gris
  • Rouge orangé si la valeur de la cellule ne dépasse pas la valeur spécifiée
  • N'oubliez pas de cocher l'icône afficher seulement ( Sinon, le nombre de cellules affiche l'icône override )

Règles spécifiques

Une fois les règles établies , Nous pouvons voir l'effet comme suit: , Continuez avec l'optimisation simple et c'est fini. ( Comme enlever la grille 、 Ajouter d'autres éléments )

 Aperçu des résultats préliminaires

2. PythonDessiner des gaufres

Voici une bibliothèque de tiers pywaffle, Regardez le nom de la bibliothèque et vous verrez qu'elle est utilisée pour dessiner des gaufres. .

Vieille règle, Installer avant utilisation :

pip install pywaffle

Puis il y a le processus de dessin simple :

import matplotlib.pyplot as plt
from pywaffle import Waffle
# Définir la police chinoise
plt.rcParams["font.family"] = "Microsoft YaHei"
# Valeur des progrès
value = 0.66
values = [value,1-value]
fig = plt.figure(
FigureClass=Waffle,
rows=10, # 10D'accord
columns=10, # 10Colonnes
values=values, # Valeur
colors=["#FF4500", "#C0C0C0"], # Couleurs
vertical=True, # Définir la direction du dessin de bas en haut 、De gauche à droite
characters='●', # Utilisez un cercle solide comme icône 
font_size=45, # La taille est45
title={

'label': 'Achèvement des travaux', # Définir le titre du diagramme
'loc': 'center',
'y':1.05,
'fontdict': {

'fontsize': 20
}
},
)
fig.text( # Définir l'affichage de la valeur de progression 
x=0.3,
y=-0.03,
s=f"{
int(100*value)}%",
ha="center",
va="center",
fontsize=25,
color='orangered', # Rouge orangé
)

La sortie du dessin est la suivante :

pythonDessiner des gaufres

3. pywaffle Présentation du diagramme à gaufres

Parce que la fonction est un diagramme à gaufres , Donc le contenu n'est pas compliqué , Vous pouvez vous référer directement aux documents officiels ( Il y a des fonctions et des cas , Et c'est assez simple ).

# Adresse du site officiel
https://pywaffle.readthedocs.io/

Gaufres(Waffle Chart),Aussi appeléSquare Pie Chart, C'est une déformation du diagramme circulaire , Bonne présentation Part des Parties dans l'ensemble .En général, Le diagramme à gaufres est fait par 100 Un réseau de , Une grille représente 1%. Distinguer les différentes données de classification par des grilles de différentes couleurs , Pour montrer la part de chaque partie dans l'ensemble .

3.1. Cas de base

IntroductionmatplotlibEtpywaffle, Spécifier lors du dessin FigureClass=WaffleC'est tout.

import matplotlib.pyplot as plt
from pywaffle import Waffle
plt.figure(
FigureClass=Waffle,
rows=5, # Nombre de lignes
columns=10, # Nombre de colonnes
values=[30, 16, 4] # Valeur( Trois types de valeurs , La somme ici =50 égal au nombre total de grilles , Une seule ligne peut être spécifiée. )
)
plt.show()

Paramètresvalues Accepte également les données du dictionnaire , Les clés du dictionnaire sont utilisées comme étiquettes et affichées dans la légende

fig = plt.figure(
FigureClass=Waffle,
rows=5,
columns=10,
values={
'Cat1': 30, 'Cat2': 16, 'Cat3': 4},
legend={
 # Légende
'loc': 'upper left', # Emplacement de la légende
'bbox_to_anchor': (1, 1) # Légende coordonnées de localisation 
}
)

3.2. Échelle numérique

Quand le nombre total de grilles et values Lorsque la somme des chiffres moyens n'est pas égale ,Définir les paramètresrounding_rule La valeur de peut spécifier une règle d'échelle .

Quandrounding_rule- Oui.ceilOu Heurenearest, La somme des valeurs d'échelle peut être supérieure au nombre total de grilles .Si c'est le cas, La grille de la dernière catégorie ne sera pas entièrement affichée .Donc,,Bien quenearest Est la règle d'arrondi par défaut ,Mais...floor En fait, la règle la plus cohérente , Parce qu'il évite le débordement du réseau .

Dans l'exemple suivant, La valeur est mise à l'échelle à 24、23、1 Comme numéro de grille ,Et utiliserrounding_rule= floor

plt.figure(
FigureClass=Waffle,
rows=5,
columns=10,
values=[48, 46, 3],
rounding_rule='floor'
)

Bien sûr., Vous pouvez également définir une valeur de paramètre par ligne , Réglage automatique du nombre de grilles :

fig = plt.figure(
FigureClass=Waffle,
rows=5,
values=[48, 46, 3],
)

3.3. Titre、 Étiquettes et légendes

Paramètres du titre title,Paramètres de l'étiquettelabels, Paramètres de la légende legend. Ces paramètres signifient et matplotlibÀ l'unanimité,Pour plus de détails, voirmatplotlibPrésentation correspondante.

data = {
'Cat1': 30, 'Cat2': 16, 'Cat3': 4}
fig = plt.figure(
FigureClass=Waffle,
rows=5,
columns=10,
values=data,
title={

'label': 'Example plot',
'loc': 'left',
'fontdict': {

'fontsize': 20
}
},
labels=[f"{
k} ({
int(v / sum(data.values()) * 100)}%)" for k, v in data.items()],
legend={

# 'labels': [f"{k} ({v}%)" for k, v in data.items()], # lebels could also be under legend instead
'loc': 'lower left',
'bbox_to_anchor': (0, -0.2),
'ncol': len(data),
'framealpha': 0,
'fontsize': 12
}
)

3.4. Couleur de la grille

Paramètrescolors Accepter les couleurs dans une liste ou un Tuple , Sa longueur doit être égale à Même chose.values.En même temps, Nous pouvons également définir les paramètres cmap_namePour spécifierColormap.

Spécifier la couleurcolors

fig = plt.figure(
FigureClass=Waffle,
rows=5,
columns=10,
values=[30, 16, 4],
colors=["#232066", "#983D3D", "#DCB732"]
)

Désignationcmap_name

Seuls les diagrammes de couleurs qualitatifs sont pris en charge ,Y compris:Pastel1Pastel2PairedAccentDark2Set1Set2Set3tab10tab20tab20btab20c.

fig = plt.figure(
FigureClass=Waffle,
rows=5,
columns=10,
values=[30, 16, 4],
cmap_name="Accent"
)

3.5. Remplir la grille de caractères ou d'icônes

Les caractères

En passant une liste de caractères ou un Tuple à un paramètre , Les catégories peuvent avoir des caractères différents pour chaque catégorie characters,La longueur doit être égale àvalues. Parfois, la police par défaut n'est pas prise en charge , La police doit être spécifiée ,S'il vous plaît. .ttf Ou .otf Le chemin absolu du fichier est passé à Paramètres font_file.

fig = plt.figure(
FigureClass=Waffle,
rows=5,
values=[30, 16, 4],
colors=["#4C8CB5", "#B7CBD7", "#C0C0C0"],
characters='●',
font_size=24
)

Icônes

PyWaffle Soutien à l'utilisationFont Awesome IcônesDessiner

https://fontawesome.com/

fig = plt.figure(
FigureClass=Waffle,
rows=5,
values=[30, 16, 4],
colors=["#232066", "#983D3D", "#DCB732"],
icons='star',
font_size=24
)

En passant une liste de noms d'icônes ou de tuples à un paramètre , Chaque catégorie peut avoir des icônes différentes icons,La longueur doit être égale àvalues.

In Font Awesome Icons Moyenne, Différents jeux d'icônes avec différents styles ,Y compris: Solid、Regular Et Brands.Peut être spécifié par paramètreicon_stylePeut être réglé,Par défaut,Ça vient desolid Rechercher des icônes dans le style .

Utilisericon_legend= True, Les symboles de la légende seront des icônes .Sinon, Ce sera une barre de couleur .

fig = plt.figure(
FigureClass=Waffle,
rows=5,
values=[30, 16, 4],
colors=["#FFA500", "#4384FF", "#C0C0C0"],
icons=['sun', 'cloud-showers-heavy', 'snowflake'],
font_size=20,
icon_style='solid',
icon_legend=True,
legend={

'labels': ['Sun', 'Shower', 'Snow'],
'loc': 'upper left',
'bbox_to_anchor': (1, 1)
}
)

Font Awesome Icons Localiser les icônes par style et nom d'icône . Différents styles contiennent différents ensembles d'icônes .Donc,, Toutes les icônes icon_style Peut - être pas la même chose..Dans ce cas,,icon_style Peut être une liste ou un Tuple de style .

fig = plt.figure(
FigureClass=Waffle,
rows=5,
values=[30, 16, 4],
colors=["#FFA500", "#4384FF", "#C0C0C0"],
icons=['sun', 'cloud-showers-heavy', 'font-awesome-flag'],
icon_size=20,
icon_style=['regular', 'solid', 'brands'],
icon_legend=False,
legend={

'labels': ['Sun', 'Shower', 'Flag'],
'loc': 'upper left',
'bbox_to_anchor': (1, 1)
}
)

3.6. Autres propriétés de la grille

Treillis d'autres attributs contiennent des formes de treillis peintes 、Espacement、 Position de départ et direction du dessin, etc. .

Couleur de la grille

Paramètresblock_aspect_ratio Contrôler la forme du réseau en changeant le Rapport largeur / hauteur du réseau .Par défaut, c'est 1, Donc le réseau est carré .

fig = plt.figure(
FigureClass=Waffle,
rows=5,
values=[30, 16, 4],
block_aspect_ratio=1.618
)

Espacement

Paramètresinterval_ratio_xEtinterval_ratio_y Contrôle des distances horizontales et verticales entre les grilles .interval_ratio_x Est la distance horizontale entre les grilles et la largeur des grilles interval_ratio_yTaux, Est le rapport entre la distance verticale entre les grilles et la hauteur des grilles .

fig = plt.figure(
FigureClass=Waffle,
rows=5,
values=[30, 16, 4],
interval_ratio_x=1,
interval_ratio_y=0.5
)

Position de départ

Utiliser les paramètresstarting_location Définir la position de la grille de départ . Il accepte la position dans la chaîne ,Par exemple:NW, SW,NEEtSE Pour les quatre coins .Par défaut,C'est...SW,Cela signifie PyWaffle Dessiner une grille à partir du coin inférieur gauche .

C'est en bas à droite ( SE) Exemple de début de dessin :

fig = plt.figure(
FigureClass=Waffle,
rows=5,
values=[30, 16, 4],
starting_location='SE'
)

Direction du dessin

Par défaut,PyWaffle Dessiner les grilles colonne par colonne , Les catégories sont donc tracées horizontalement . Pour le rendre vertical , Veuillez définir les paramètres verticalPourTrue.

Dans l'exemple suivant, Il se déplace du coin inférieur gauche au coin inférieur droit jusqu'à ce que la grille soit dessinée en haut :

3.7. Autres

Redimensionner le dessin、Couleur de fond、DPI Attendez.

Commefigsize,dpi,facecolor,tight_layout Vous pouvez le mettre en place , Définir la couleur de fond comme suit

fig = plt.figure(
FigureClass=Waffle,
rows=5,
values=[30, 16, 4],
colors=["#232066", "#983D3D", "#DCB732"],
facecolor='#DDDDDD' # facecolor is a parameter of matplotlib.pyplot.figure
)

Ajouter d'autres éléments

Dans l'exemple suivant,Nous utilisonstext() Méthode pour ajouter un filigrane personnalisé à un dessin

fig = plt.figure(
FigureClass=Waffle,
rows=5,
values=[30, 16, 4]
)
fig.text(
x=0.5,
y=0.5,
s="Appelez - moi frère.",
ha="center",
va="center",
rotation=30,
fontsize=40,
color='gray',
alpha=0.3,
bbox={

'boxstyle': 'square',
'lw': 3,
'ec': 'gray',
'fc': (0.9, 0.9, 0.9, 0.5),
'alpha': 0.3
}
)

版权声明:本文为[Appelez - moi frère.]所创,转载请带上原文链接,感谢。 https://pythonmana.com/2022/01/202201080611485144.html