Python实验四:Matplotlib数据可视化
Posted 咳咳n
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python实验四:Matplotlib数据可视化相关的知识,希望对你有一定的参考价值。
Python实验四:Matplotlib数据可视化
实验内容:
任务一:分析1996~2015年人口数据特征间的关系
需求说明:人口数据总共拥有 6 个特征,分别为年末总人口、男性人口、女性人口、城镇人口、乡村人口和年份。查看各个特征随着时间推移发生的变化情况可以分析出未来男女人口比例、城乡人口变化的方向。
任务二:分析1996~2015年人口数据各个特征的分布与分散状况
需求说明:通过绘制各年份男女人口数目及城乡人口数目的直方图,男女人口比例及城乡人口比例的饼图可以发现人口结构的变化。而绘制每个特征的箱线图则可以发现不同特征增长或者减少的速率是否变得缓慢。
实验步骤:
任务一步骤:
(1)使用NumPy库读取人口数据。
(2)创建画布figsize=(12,12),并添加子图。
(3)在两个子图上分别绘制散点图其中(marker=’8’,color=’red’)和折线图。
(4)将绘制的散点图和折线图保存在当前文件夹下,分别为“image1.png”和“image2.png”。
(5)显示图片并分析未来人口变化趋势。
import numpy as np
import matplotlib.pyplot as plt
data = np.load('populations.npz')
# print(data['data'])
# print(data['feature_names'])
plt.rcParams['font.sans-serif'] = 'SimHei'
name = data['feature_names']
values = data['data']
pic_1 = plt.figure(figsize=(12, 12))
pic_11 = pic_1.add_subplot(2, 1, 1)
plt.scatter(values[0:20, 0], values[0:20, 1], marker='8', color='red')
plt.legend('年末')
plt.ylabel('总人口(万人)')
plt.title('1996~2015年末与各类人口散点图')
pic2 = pic_1.add_subplot(2, 1, 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(['男性', '女性', '城镇', '乡村'])
plt.savefig('image1.png')
pic_2 = plt.figure(figsize=(12, 12))
pic_21 = pic_2.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)
plt.legend('年末')
plt.title('1996~2015年末总与各类人口折线图')
pic2 = pic_2.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.savefig('image2.png')
plt.show()
任务二步骤:
(1)创建 3 幅画布并添加对应数目的子图
(2)在每一幅子图上绘制对应的图形
(3)保存和显示图形。将直方图、饼图、箱线图分别保存为image1.png、image2.png、image3.png
(4)根据图形,分析我国人口结构变化情况以及变化速率的增减情况。
import numpy as np
import matplotlib.pyplot as plt
data = np.load('populations.npz', allow_pickle=True)
plt.rcParams['font.sans-serif'] = 'SimHei'
name = data['feature_names']
values = data['data']
label_1 = ['男性', '女性']
label_2 = ['城镇', '乡村']
ex = [0.01, 0.01]
# 绘制直方图
pic_1 = plt.figure(figsize=(12, 12))
pic_11 = pic_1.add_subplot(2, 2, 1)
plt.bar(range(2), values[19, 2:4], width=0.5, color='orange')
plt.ylabel('人口(万人)')
plt.ylim(0, 80000)
plt.xticks(range(2), label_1)
plt.title('1996年男、女人口数直方图')
pic_12 = pic_1.add_subplot(2, 2, 2)
plt.bar(range(2), values[0, 2:4], width=0.5, color='red')
plt.ylabel('人口(万人)')
plt.ylim(0, 80000)
plt.xticks(range(2), label_1)
plt.title('2015年男、女人口数直方图')
pic_13 = pic_1.add_subplot(2, 2, 3)
plt.bar(range(2), values[19, 4:6], width=0.5, color='orange')
plt.xlabel('类别')
plt.ylabel('人口(万人)')
plt.ylim(0, 90000)
plt.xticks(range(2), label_2)
plt.title('1996年城、乡人口数直方图')
pic_14 = pic_1.add_subplot(2, 2, 4)
plt.bar(range(2), values[0, 4:6], width=0.5, color='red')
plt.xlabel('类别')
plt.ylabel('人口(万人)')
plt.ylim(0, 90000)
plt.xticks(range(2), label_2)
plt.title('2015年城、乡人口数直方图')
plt.savefig('image1.png')
# 绘制饼图
pic_2 = plt.figure(figsize=(8, 8))
pic_21 = pic_2.add_subplot(2, 2, 1)
plt.pie(values[19, 2:4], explode=ex, labels=label_1, colors=['pink', 'crimson'], autopct='%1.1f%%')
plt.title('1996年男、女人口数饼图')
pic_22 = pic_2.add_subplot(2, 2, 2)
plt.pie(values[0, 2:4], explode=ex, labels=label_1, colors=['PeachPuff', 'skyblue'], autopct='%1.1f%%')
plt.title('2015年男、女人口数饼图')
pic_23 = pic_2.add_subplot(2, 2, 3)
plt.pie(values[19, 4:6], explode=ex, labels=label_2, colors=['pink', 'crimson'], autopct='%1.1f%%')
plt.title('1996年城、乡人口数饼图')
pic_24 = pic_2.add_subplot(2, 2, 4)
plt.pie(values[0, 4:6], explode=ex, labels=label_2, colors=['PeachPuff', 'skyblue'], autopct='%1.1f%%')
plt.title('2015年城、乡人口数饼图')
plt.savefig('image2.png')
# 箱纸图
pic_3 = plt.figure(figsize=(10, 10))
plt.boxplot(values[0:20, 1:6], notch=True, labels=['年末', '男性', '女性', '城镇', '乡村'], meanline=True)
plt.xlabel('类别')
plt.ylabel('人口(万人)')
plt.title('1996~2015年各特征人口箱纸图')
plt.savefig('image3.png')
plt.show()
以上是关于Python实验四:Matplotlib数据可视化的主要内容,如果未能解决你的问题,请参考以下文章