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


运行环境:pycharm-community-2019.1.2

使用库:NumPy、matplotlib.pyplot

数据(populations.npz):链接:https://pan.baidu.com/s/1c_6-7EazZsvaf9of9XcLSQ            提取码:nr6p 


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


实现步骤:

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

实训1 分析1996~2015年人口数据特征间的关系_第1张图片

函数名称

函数作用

plt.figure

创建一个空白画布,可以指定画布大小,像素

figure.add_subplot

创建并选中子图,可以指定子图的行数,列数,与选中图片编号

plt.title

在当前图形中添加标题,可以指定标题的名称、位置、颜色、字体大小等参数

plt.xlabel

在当前图形中添加x轴名称,可以指定位置、颜色、字体大小等参数

plt.ylabel

在当前图形中添加y轴名称,可以指定位置、颜色、字体大小等参数

plt.xlim

指定当前图形x轴的范围,只能确定一个数值区间,而无法使用字符串标识

plt.ylim

指定当前图形y轴的范围,只能确定一个数值区间,而无法使用字符串标识

plt.xticks

指定x轴刻度的数目与取值

plt.yticks

指定y轴刻度的数目与取值

plt.legend

指定当前图形的图例,可以指定图例的大小、位置、标签

plt.savafig

保存绘制的图片,可以指定图片的分辨率、边缘的颜色等参数

plt.show

在本机显示图形


  •  pyplot使用rc配置文件来自定义图形的各种默认属性,被称为rc配置或rc参数。
  • pyplot中几乎所有的默认属性都是可以控制的,例如视图窗口大小以及每英寸点数、线条宽度、颜色和样式、坐标轴、坐标和网格属性、文本、字体等。
  • 默认的pyplot字体并不支持中文字符的显示,因此需要通过设置font.sans-serif参数改变绘图时的字体,使得图形可以正常显示中文。同时,由于更改字体后,会导致坐标轴中的部分字符无法显示,因此需要同时更改axes.unicode_minus参数。
  • 除了设置线条和字体的rc参数外,还有设置文本、箱线图、坐标轴、刻度、图例、标记、图片、图像保存等rc参数。具体参数与取值可以参考官方文档。

实训1 分析1996~2015年人口数据特征间的关系_第2张图片

实训1 分析1996~2015年人口数据特征间的关系_第3张图片


散点图和折线图是数据分析最常用的两种图形。这两种图形都能够分析不同数值型特征间的关系。其中,散点图主要用于分析特征间的相关关系,折线图则用于分析自变量特征和因变量特征之间的趋势关系


散点图(Scatter Diagram,又称散点分布图):

  • 利用坐标点(散点)的分布形态反映特征间的统计关系的一种图形,值由点在图表中的位置表示,类别由图表中的不同标记表示,通常用于比较跨类别的数据。
  • 特征之间是否存在数值或数量的关联趋势,关联趋势是线性的还是非线性的。
  • 如果某一个点或者某几个点偏移大多数点,则这些点就是集群值,通过散点图从而进一步分析这些离群值是否在建模分析中产生很大的影响。

实训1 分析1996~2015年人口数据特征间的关系_第4张图片


折线图(Line Chart):

  • 一种将数据点按照顺序连接起来的图形。
  • 主要功能是查看因变量y随着自变量x改变的趋势,最适合用于显示随时间(根据常用比例设置)而变化的连续数据。同时还可以看出数量的差异,增长趋势的变化。

实训1 分析1996~2015年人口数据特征间的关系_第5张图片


完整代码:

import numpy as np
import matplotlib.pyplot as plt

#实训1 分析1996~2015年人口数据特征间的关系
#使用numpy库读取人口数据
data=np.load('F:/data/populations.npz',allow_pickle=True)
print(data.files)#查看文件中的数组
print(data['data'])
print(data['feature_names'])

plt.rcParams['font.sans-serif']='SimHei'#设置中文显示
name=data['feature_names']#提取其中的feature_names数组,视为数据的标签
values=data['data']#提取其中的data数组,视为数据的存在位置

p1=plt.figure(figsize=(12,12))#确定画布大小
pip1=p1.add_subplot(2,1,1)#创建一个两行一列的子图并开始绘制
#在子图上绘制散点图
plt.scatter(values[0:20,0],values[0:20,1],marker='8',color='red')
plt.ylabel('总人口(万人)')
plt.legend('年末')
plt.title('1996~2015年末与各类人口散点图')

pip2=p1.add_subplot(2,1,2)#绘制子图2
plt.scatter(values[0:20,0],values[0:20,2],marker='o',color='yellow')
plt.scatter(values[0:20,0],values[0:20,3],marker='D',color='green')
plt.scatter(values[0:20,0],values[0:20,4],marker='p',color='blue')
plt.scatter(values[0:20,0],values[0:20,5],marker='s',color='purple')
plt.xlabel('时间')
plt.ylabel('总人口(万人)')
plt.xticks(values[0:20,0])
plt.legend(['男性','女性','城镇','乡村'])


#在子图上绘制折线图
p2=plt.figure(figsize=(12,12))
p1=p2.add_subplot(2,1,1)
plt.plot(values[0:20,0],values[0:20,1],color='r',linestyle='--',marker='8')
plt.ylabel('总人口(万人)')
plt.xticks(range(0,20,1),values[range(0,20,1),0],rotation=45)#rotation设置倾斜度
plt.legend('年末')
plt.title('1996~2015年末总与各类人口折线图')

p2=p2.add_subplot(2,1,2)
plt.plot(values[0:20,0],values[0:20,2],'y-')
plt.plot(values[0:20,0],values[0:20,3],'g-.')
plt.plot(values[0:20,0],values[0:20,4],'b-')
plt.plot(values[0:20,0],values[0:20,5],'p-')
plt.xlabel('时间')
plt.ylabel('总人口(万人)')
plt.xticks(values[0:20,0])
plt.legend(['男性','女性','城镇','乡村'])

#显示图片
plt.show()

运行结果:

实训1 分析1996~2015年人口数据特征间的关系_第6张图片

实训1 分析1996~2015年人口数据特征间的关系_第7张图片

 

你可能感兴趣的:(Python,散点图,折线图)