数据挖掘技术-绘制人口散点与折线图

该博客通过Python的matplotlib库展示了1996年至2015年的人口数据,包括年末总人口及性别、城乡人口等分类数据的散点图和折线图。散点图和折线图分别使用不同颜色和形状的点、线来区分不同类别,揭示了人口数量随时间的缓慢增长趋势,以及男性和女性人口的同步上升,城镇人口增长明显,乡村人口下降的态势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

绘制人口散点与折线图

  1. 前置步骤

准备数据populations.npz,下载数据populations.npz到Linux本地的/course/DataAnalyze/data目录

  1. 绘图
  1. pyplot中绘制散点图的函数为scatter,绘制折线图的函数为plot。如代码 41所示。

代码 41 1996-2015年人口数据散点图与折线图1

In[1]:

import os

import numpy as np

import matplotlib.pyplot as plt

os.chdir('/course/DataAnalyze /data')

plt.rcParams['font.sans-serif'] = 'WenQuanYi Zen Hei'   # 设置中文显示

feature = np.load('./populations.npz', allow_pickle=True)['feature_names']  # 加载列名

amount = np.load('./populations.npz', allow_pickle=True)['data']  # 加载数据

amount = amount[::-1,:][2:,:]

p1 = plt.figure(figsize=(9,10))  #设置画布

ax1 = p1.add_subplot(2,1,1)     #创建第一幅子图

plt.title('1996-2015年人口数据散点图与折线图')

plt.ylabel('人口数量')

plt.xticks(rotation = 45)

for i in range(1,6):            #利用for循环画图

    plt.scatter(amount[:,0][0:20],amount[:,i][0:20])

ax1.legend(feature[1:],bbox_to_anchor=(1, 1),ncol=1)  #图例放图外,以免遮挡信息

ax2 = p1.add_subplot(2,1,2)     #创建第二幅子图

plt.ylabel('人口数量')

plt.xticks(rotation = 45)

for i in range(1,6):

    plt.plot(amount[:,0][0:20],amount[:,i][0:20])

ax2.legend(feature[1:],bbox_to_anchor=(1, 1),ncol=1)

plt.show()

Out[1]:

  1. 使用不同的颜色、不同形状的点,绘制2000-2017年间各产业季度生产总值的散点图,如代码 42所示。

代码 42 1996-2015年人口数据散点图与折线图2

In[2]:

# 调节rc参数方便观察

# 重新画图

p1 = plt.figure(figsize=(9,10))

ax1 = p1.add_subplot(2,1,1)

plt.title('1996-2015年人口数据散点图与折线图')

plt.ylabel('人口数量')

plt.xticks(rotation = 45)

marker=['o','D','v','*','h']     #提前设置点的形状与颜色

color=['blue','darkred','red','darkgreen','green']  #颜色深浅不同但色彩相近,方便作分类对比

for i in range(1,6):

    plt.scatter(amount[:,0][0:20],amount[:,i][0:20],marker=marker[i-1],c=color[i-1])

ax1.legend(feature[1:],bbox_to_anchor=(1, 1),ncol=1)

ax2 = p1.add_subplot(2,1,2)

plt.ylabel('人口数量')

plt.xticks(rotation = 45)

linestyle=['-','--','-.',':','-']  #提前设置线段的形状

for i in range(1,6):

    plt.plot(amount[:,0][0:20],amount[:,i][0:20],linestyle=linestyle[i-1],c=color[i-1])

ax2.legend(feature[1:],bbox_to_anchor=(1, 1),ncol=1)

plt.show()

Out[2]:

 

 

  1. 从代码 42的运行结果中的散点图或折线图中可以看到,年末总的人口数量是呈现一个缓慢上升的趋势。在性别这一方面,男性和女性的数量也是呈现出一个逐年上升的现象,在人口属性方面,城镇人口的涨幅较大,而乡村人口数量则是逐年下降。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值