To explore the correlation between birth rate, life expectancy and per capita income, we may use a scatter plot. Note that the marker sizes are set in proportion to the countries' per-capita GDP but have to be scaled a little so they don't get too large.
import numpy as np import matplotlib.pyplot as plt countries = ['Brazil', 'Madagascar', 'S. Korea', 'United States', 'Ethiopia', 'Pakistan', 'China', 'Belize'] # Birth rate per 1000 population birth_rate = [16.4, 33.5, 9.5, 14.2, 38.6, 30.2, 13.5, 23.0] # Life expectancy at birth, years life_expectancy = [73.7, 64.3, 81.3, 78.8, 63.0, 66.4, 75.2, 73.7] # Per person income fixed to US Dollars in 2000 GDP = np.array([4800, 240, 16700, 37700, 230, 670, 2640, 3490]) fig = plt.figure() ax = fig.add_subplot(111) # Some random colours: colours = range(len(countries)) ax.scatter(birth_rate, life_expectancy, c=colours, s=GDP/20) ax.set_xlim(5, 45) ax.set_ylim(60, 85) ax.set_xlabel('Birth rate per 1000 population') ax.set_ylabel('Life expectancy at birth (years)') plt.show()
To label the bubbles, add the following code before showing the plot:
offset = 1 for x, y, s, country in zip(birth_rate, life_expectancy, GDP, countries): ax.text(x+offset, y, country, va='center')