The historical populations of five US cities are given in the files boston.tsv
, houston.tsv
, detroit.tsv
, san_jose.tsv
, phoenix.tsv
as tab-separated columns of (year, population). They can be downloaded as us-city-populations.zip.
The following program plots these data on one set of axes with a different line style for each.
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111)
cities = ['Boston', 'Houston', 'Detroit', 'San Jose', 'Phoenix']
# line styles: solid, dashes, dots, dash-dots, and dot-dot-dash
linestyles = [{'ls': '-'}, {'ls': '--'}, {'ls': ':'}, {'ls': '-.'},
{'dashes': [2, 4, 2, 4, 8, 4]}]
for i, city in enumerate(cities):
filename = '{}.tsv'.format(city.lower()).replace(' ', '_')
yr, pop = np.loadtxt(filename, unpack=True)
line, = ax.plot(yr, pop/1.e6, label=city, color='k', **linestyles[i])
ax.legend(loc='upper left')
ax.set_xlim(1800, 2020)
ax.set_xlabel('Year')
ax.set_ylabel('Population (millions)')
plt.show()
Note how the city name is used to deduce the corresponding filename.