Horizontal stacked bar chart in Matplotlib
Legend with bubble size
import numpy as np import matplotlib.pyplot as plt people = ('A','B','C','D','E','F','G','H') segments = 4 # generate some multi-dimensional data & arbitrary labels data = 3 + 10* np.random.rand(segments, len(people)) percentages = (np.random.randint(5,20, (len(people), segments))) y_pos = np.arange(len(people)) fig = plt.figure(figsize=(10,8)) ax = fig.add_subplot(111) colors ='rgbwmc' patch_handles = [] left = np.zeros(len(people)) # left alignment of data starts at zero for i, d in enumerate(data): patch_handles.append(ax.barh(y_pos, d, color=colors[i%len(colors)], align='center', left=left)) # accumulate the left-hand offsets left += d # go through all of the bar segments and annotate for j in range(len(patch_handles)): for i, patch in enumerate(patch_handles[j].get_children()): bl = patch.get_xy() x = 0.5*patch.get_width() + bl[0] y = 0.5*patch.get_height() + bl[1] ax.text(x,y, "%d%%" % (percentages[i,j]), ha='center') ax.set_yticks(y_pos) ax.set_yticklabels(people) ax.set_xlabel('Distance') plt.show()
The following is the output that will be obtained:
2019-03-08T09:08:55+05:30
2019-03-08T09:08:55+05:30
Amit Arora
Amit Arora
Python Programming Tutorial
Python
Practical Solution