Randy Zwitch explains how to create a complex bar chart on the coast.
The solution is to consider the complex histogram as multiple, overlapping, charts on the same chart, so that the lower segment of the bars is in front and obscures the lower parts of subsequent segments.
To quote on my blog:
import pandas as pd from matplotlib import pyplot as plt import matplotlib as mpl import seaborn as sns %matplotlib inline #Read in data & create total column stacked_bar_data = pd.read_csv("C:\stacked_bar.csv") stacked_bar_data["total"] = stacked_bar_data.Series1 + stacked_bar_data.Series2 #Set general plot properties sns.set_style("white") sns.set_context({"figure.figsize": (24, 10)}) #Plot 1 - background - "total" (top) series sns.barplot(x = stacked_bar_data.Group, y = stacked_bar_data.total, color = "red") #Plot 2 - overlay - "bottom" series bottom_plot = sns.barplot(x = stacked_bar_data.Group, y = stacked_bar_data.Series1, color = "#0000A3") topbar = plt.Rectangle((0,0),1,1,fc="red", edgecolor = 'none') bottombar = plt.Rectangle((0,0),1,1,fc='#0000A3', edgecolor = 'none') l = plt.legend([bottombar, topbar], ['Bottom Bar', 'Top Bar'], loc=1, ncol = 2, prop={'size':16}) l.draw_frame(False) #Optional code - Make plot look nicer sns.despine(left=True) bottom_plot.set_ylabel("Y-axis label") bottom_plot.set_xlabel("X-axis label") #Set fonts to consistent 16pt size for item in ([bottom_plot.xaxis.label, bottom_plot.yaxis.label] + bottom_plot.get_xticklabels() + bottom_plot.get_yticklabels()): item.set_fontsize(16)
source share