Ajout d'étiquettes de groupe aux graphiques à barres
Dans Matplotlib, l'ajout d'étiquettes de groupe aux graphiques à barres peut améliorer leur lisibilité et fournir une représentation visuelle claire de la structure des données. Voici une solution personnalisée pour y parvenir :
# Custom function to group data for bar chart def mk_groups(data): newdata = data.items() thisgroup = [] groups = [] for key, value in newdata: newgroups = mk_groups(value) if newgroups is None: thisgroup.append((key, value)) else: thisgroup.append((key, len(newgroups[-1]))) if groups: groups = [g + n for n, g in zip(newgroups, groups)] else: groups = newgroups return [thisgroup] + groups # Custom function to label group bars def label_group_bar(ax, data): groups = mk_groups(data) xy = groups.pop() x, y = zip(*xy) ly = len(y) xticks = range(1, ly + 1) ax.bar(xticks, y, align='center') ax.set_xticks(xticks) ax.set_xticklabels(x) ax.set_xlim(.5, ly + .5) ax.yaxis.grid(True) scale = 1. / ly for pos in xrange(ly + 1): # change xrange to range for python3 add_line(ax, pos * scale, -.1) ypos = -.2 while groups: group = groups.pop() pos = 0 for label, rpos in group: lxpos = (pos + .5 * rpos) * scale ax.text(lxpos, ypos, label, ha='center', transform=ax.transAxes) add_line(ax, pos * scale, ypos) pos += rpos add_line(ax, pos * scale, ypos) ypos -= .1 # Example usage data = {'Room A': {'Shelf 1': {'Milk': 10, 'Water': 20}, 'Shelf 2': {'Sugar': 5, 'Honey': 6} }, 'Room B': {'Shelf 1': {'Wheat': 4, 'Corn': 7}, 'Shelf 2': {'Chicken': 2, 'Cow': 1} } } fig = plt.figure() ax = fig.add_subplot(1, 1, 1) label_group_bar(ax, data) fig.subplots_adjust(bottom=0.3) # Save the plot to a file fig.savefig('labeled_group_bar_chart.png')
Explication :
Cette approche fournit un moyen simple d'ajouter des étiquettes de groupe aux graphiques à barres dans Matplotlib, permettant une visualisation améliorée des données. et interprétation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!