ZBLOG

如下5-6利用rural_population.csv文件 5、 绘制农村人口户数的矩阵树形图 ① 将csv文件转化为json文件格式后绘制一般树形图和矩阵树形图

以下是将csv文件转化为json文件格式后,绘制农村人口户数的矩阵树形图的示例代码:

import pandas as pd
import json
import matplotlib.pyplot as plt
import squarify

# 读取csv文件并转换为DataFrame对象
data = pd.read_csv('rural_population.csv')

# 将DataFrame转换为字典列表,并按照户籍人口进行排序
sorted_data = data.sort_values(by='户籍人口', ascending=False)
dict_list = sorted_data.to_dict(orient='records')

# 构建树形结构的字典数据
tree_data = {'name': 'root', 'children': []}
for item in dict_list:
    province = item['省份']
    city = item['地级市']
    population = item['户籍人口']

    # 查找省份节点是否已存在于树中,如果不存在则添加新节点;如果存在则在对应省份节点下添加城市节点
    province_node = next((child for child in tree_data['children'] if child['name'] == province), None)
    if not province_node:
        province_node = {'name': province, 'children': []}
        tree_data['children'].append(province_node)

    city_node = {'name': city, 'value': population}
    province_node['children'].append(city_node)

# 将树形结构数据保存为json文件格式
with open('tree_data.json', 'w') as file:
    json.dump(tree_data, file)

# 绘制矩阵树形图
plt.figure(figsize=(12, 8))
squarify.plot(sizes=[1], label='root', alpha=0, text_kwargs={'fontsize': 14})
squarify.plot(sizes=[1] * len(tree_data['children']), label=tree_data['children'], value=sorted_data['户籍人口'],
              alpha=.8, color=['#'+format(i, '02x')+format(i+40, '02x')+format(i+80, '02x') for i in range(len(tree_data['children']))])
plt.axis('off')
plt.title("农村人口户数矩阵树形图", fontsize=16)
plt.show()

请确保将rural_population.csv文件与代码放在同一目录下,并且安装了pandasmatplotlibsquarify库。执行以上代码后,会生成一个名为tree_data.json的json文件,以及显示农村人口户数的矩阵树形图。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=2176

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?