4、读取各国GDP数据的json文件并用Pygal绘图
各国 GDP 数据的 json 文件下载
步骤:
-
读取 json 数据
- json 模块包含了将 json 字符串恢复成 Python 对象函数,也提供了将 Python 对象转换成 JSON 字符串的函数
- json 模块的 load() 函数加载 json 数据后,读取指定字典中 key 对应的 value
-
使用 Pygal 绘图
import json, pygal
with open('gdp_json.json', 'r') as f:
gdp_data = json.load(f) # json.load()数据返回的是字典
# 分析如下 5 个国家的 GDP
country_names = ['中国', '美国', '日本', '俄罗斯', '加拿大']
country_codes = ['CHN', 'USA', 'JPN', 'RUS', 'CAN']
country_gdps = [{}, {}, {}, {}, {}] # 5 个国家对应的字典,{年份1:GDP值1, 年份2:GDP值2,...}
for gdp_item in gdp_data:
for i,country in enumerate(country_codes):
if gdp_item['Country Code'] == country:
year = gdp_item['Year']
# 获取 2001~2016 年的 GDP 值
if 2000 < year < 2017:
country_gdps[i][year] = gdp_item['Value']
# 字典(无序)转列表
x_data = range(2001, 2017)
country_gdps_list = [[], [], [], [], []]
for i in range(len(country_gdps_list)):
for year in x_data:
country_gdps_list[i].append(country_gdps[i][year] / 1e8) # 除以 10 的 8 次方,单位为亿
bar = pygal.Bar() # 创建图(柱状图)
# 添加数据
for i, country_name in enumerate(country_names):
bar.add(country_name, country_gdps_list[i])
bar.x_labels = x_data
bar.x_label_rotation = 45
bar.title = '各国历年GDP对比图'
bar.x_title = '年份'
bar.y_title = 'GDP(亿)'
bar.legend_at_bottom = True
bar.show_x_guides = True
bar.show_y_guides = False
bar.render_to_file('gdp.svg')