Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Stacked Bar Charts | Creating Commonly Used Plots
Ultimate Visualization with Python

book
Stacked Bar Charts

Stacked bar charts are useful when we want to compare several categories (two or more) for each value on the x-axis. For example, instead of only looking at the GDP of different countries we may want to look at the amount of contribution of each economic sector to the GDP of a particular country (the data is not real):

import matplotlib.pyplot as plt
import numpy as np
countries = ['USA', 'China', 'Japan']
primary_sector = np.array([1.4, 4.8, 0.4])
secondary_sector = np.array([11.3, 6.2, 0.8])
tertiary_sector = np.array([14.2, 8.4, 3.2])
# Calling the bar() function multiple times for each category (sector)
plt.bar(countries, primary_sector)
plt.bar(countries, secondary_sector, bottom=primary_sector)
plt.bar(countries, tertiary_sector, bottom=primary_sector + secondary_sector)
plt.show()
1234567891011
import matplotlib.pyplot as plt import numpy as np countries = ['USA', 'China', 'Japan'] primary_sector = np.array([1.4, 4.8, 0.4]) secondary_sector = np.array([11.3, 6.2, 0.8]) tertiary_sector = np.array([14.2, 8.4, 3.2]) # Calling the bar() function multiple times for each category (sector) plt.bar(countries, primary_sector) plt.bar(countries, secondary_sector, bottom=primary_sector) plt.bar(countries, tertiary_sector, bottom=primary_sector + secondary_sector) plt.show()
copy

Similarly to line plots and scatter plots, we called the bar() function three times to create three bars for each value on the x-axis (country names in our example). In every call countries are specified as x-axis values in order to create stacked bars. Pay extra attention to the bottom parameter.

Note

bottom parameter specifies the y coordinate(s) of the bottom side(s) of the bars. Here is the documentation.

Compito

Swipe to start coding

  1. Use the correct function for creating bar charts.
  2. Plot the lower bars for yes_answers.
  3. Plot the bars for no_answers on top of the bars for yes_answers with specifying the correct keyword argument.

Soluzione

import matplotlib.pyplot as plt
import numpy as np
questions = ['question_1', 'question_2', 'question_3']
yes_answers = np.array([500, 240, 726])
no_answers = np.array([432, 618, 101])
# Create the lower bars
plt.bar(questions, yes_answers)
# Create the upper bars
plt.bar(questions, no_answers, bottom=yes_answers)
plt.show()

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 5
import matplotlib.pyplot as plt
import numpy as np
questions = ['question_1', 'question_2', 'question_3']
yes_answers = np.array([500, 240, 726])
no_answers = np.array([432, 618, 101])
# Create the lower bars
___.___(___, ___)
# Create the upper bars
___.___(___, ___, ___=___)
plt.show()
toggle bottom row
some-alt