数据集一般是 json or csv 格式进行存储的。
本文绘制世界人口地图的数据已上传,或在http://data.okfn.org/ 进行下载。
大致如下:
对数据如何处理呢?先是需要读取文件,然后将文件内容存储到列表里,再通过可视化的方法,进行处理。
比如:绘制某国家随着时间变化的人口变化图。
只有打开csv格式的是新内容,绘制在前篇博客有讲。
# -*- coding: utf-8 -*-
"""
根据世界各个国家人口在每年人口情况,绘制出随时间的人口数变化图
"""
import csv#导入csv格式的处理模板,如果是json则导入json
from matplotlib import pyplot as plt #处理模板
Country_code = input("请输入需要查询的人口变化图的国家代码:")
population_nums = []#用于存储所有的人口
years = []#用于存储人口对应的年份
filename = "population_csv.csv"#文件名
with open(filename) as f:#打开文件存储为f
reader = csv.reader(f)#阅读器对象
header_row = next(reader)#读取第一行,第一行是行的属性。
# print(header_row)#展示第一行
#展示属性在列表中的位置
for index, column_header in enumerate(header_row):
# print(index, column_header)
for row in reader:
if row[1] == Country_code:
num = int(row[3])
population_nums.append(num)#将人口存储进入列表
year = int(row[2])
years.append(year)#将年份存储进入列表
# print(population_nums,years)
fig = plt.figure(dpi = 128,figsize =(10,8))#窗口大小
plt.plot(years,population_nums,c = "blue")#横坐标和年份
plt.title( str(Country_code) +" population_num in 1960-2018", fontsize=24)#标题和尺寸
plt.xlabel('year', fontsize=16)#x轴标题和尺寸
plt.xticks([x for x in range(1960,2019) if x%3 == 0])#设置横坐标的取值点,这里设置为3的倍数。
plt.yticks([y for y in range(0,1492730000,50000000)])
fig.autofmt_xdate()#横坐标斜置
plt.ylabel("population(10^9)", fontsize=16)#y轴标题和尺寸
plt.tick_params(axis='both', which='major', labelsize=16)
plt.axis([1960,2018,0,1492730000])#横纵坐标范围
plt.show()#展示
首先读取了数据,随后由于数据的属性是相同的,根据属性的位置进行查找,获取到满足条件的数据存放到列表中,然后再通过plt进行绘制。
查询中国的人口变化情况:
USA:
根据如此多的国家,可以将人口绘制显示在世界地图上吗?先展示一下结果: