实训 1:分析 1996-2015 年人口数据特征间的关系

训练要点

  • 掌握 pyplot 基础语法
  • 掌握子图的绘制方法
  • 掌握散点图、折线图的绘制方法

需求说明

人口数据总共拥有 6 个特征,分别为年末总人口、男性人口、女性人口、城镇人口、乡村人口和年份。查看各个特征随着时间推移发生的变化情况可以分析出未来男女人口比例、城乡人口变化的方向。

实现步骤

  1. 使用 NumPy 库读取人口数据。
  2. 创建画布,并添加子图。
  3. 在两个子图上分别绘制散点图和折线图。
  4. 保存,显示图片。
  5. 分析未来人口变化趋势。

代码:

import numpy as np
import matplotlib.pyplot as plt

# 读取数据
data = np.loadtxt('population.txt', dtype=int)

# 创建画布和子图
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5))

# 绘制散点图
ax1.scatter(data[:, 5], data[:, 0], s=5)
ax1.set_xlabel('Year')
ax1.set_ylabel('Total Population')
ax1.set_title('Total Population vs Year')

# 绘制折线图
ax2.plot(data[:, 5], data[:, 1], label='Male')
ax2.plot(data[:, 5], data[:, 2], label='Female')
ax2.set_xlabel('Year')
ax2.set_ylabel('Population')
ax2.set_title('Male vs Female Population')
ax2.legend()

# 保存和显示图像
plt.savefig('population_relationship.png')
plt.show()

实训 2:分析 1996-2015 年人口数据各个特征的分布与分散状况

训练要点

  • 掌握直方图绘制。
  • 掌握饼图绘制。
  • 掌握箱线图绘制。

需求说明

通过绘制各年份男女人口数目及城乡人口数目的直方图,男女人口比例及城乡人口比例的饼图可以发现人口结构的变化。而绘制每个特征的箱线图则可以发现不同特征增长或者减少的速率是否变得缓慢。

实现步骤

  1. 创建 3 幅画布并添加对应数目的子图。
  2. 在每一幅子图上绘制对应的图形。
  3. 保存和显示图形。
  4. 根据图形,分析我国人口结构变化情况以及变化速率的增减状况。

代码:

import numpy as np
import matplotlib.pyplot as plt

# 读取数据
data = np.loadtxt('population.txt', dtype=int)

# 创建画布和子图
fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(15, 5))

# 绘制直方图
ax1.hist(data[:, 1], bins=20, alpha=0.5, label='Male')
ax1.hist(data[:, 2], bins=20, alpha=0.5, label='Female')
ax1.set_xlabel('Population')
ax1.set_ylabel('Frequency')
ax1.set_title('Population Distribution by Gender')
ax1.legend()

ax2.hist(data[:, 3], bins=20, alpha=0.5, label='Urban')
ax2.hist(data[:, 4], bins=20, alpha=0.5, label='Rural')
ax2.set_xlabel('Population')
ax2.set_ylabel('Frequency')
ax2.set_title('Population Distribution by Area')
ax2.legend()

# 绘制饼图
total = np.sum(data[:, 1:5])
male = np.sum(data[:, 1])
female = np.sum(data[:, 2])
urban = np.sum(data[:, 3])
rural = np.sum(data[:, 4])

ax3.pie([male/total, female/total], labels=['Male', 'Female'], autopct='%1.1f%%')
ax3.set_title('Gender Ratio')

# 保存和显示图像
plt.savefig('population_distribution.png')
plt.show()

# 绘制箱线图
fig, ax = plt.subplots()
ax.boxplot(data[:, 1:5], labels=['Total', 'Male', 'Female', 'Urban', 'Rural'])
ax.set_ylabel('Population')
ax.set_title('Population Distribution by Feature')

# 保存和显示图像
plt.savefig('population_boxplot.png')
plt.show()

# 分析
# 从直方图和饼图可以看出,我国人口结构呈现老龄化趋势,女性人口比例高于男性人口比例,城镇人口比例逐渐增加。
# 从箱线图可以看出,年末总人口和男性人口增长速率逐渐变缓,女性人口增长速率逐渐加快,城镇人口和乡村人口增长速率差异不大,但城镇人口的波动范围更大。
Python Matplotlib 数据可视化实战:分析 1996-2015 年人口数据特征

原文地址: https://www.cveoy.top/t/topic/nC06 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录