我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python用pyecharts画矩形树图实例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python用pyecharts画矩形树图实例

一、概念介绍

矩形树图(Treemap),即矩形式树状结构图,利用矩形的面积表示数值的大小,颜色用于类别区分,常用于呈现多类别的一维数值比较,易读性强;基于树状的功能,在结构图中可以同时呈现数据层次的信息。

示例如下:

· 对比常见的柱状图和条形图,矩形树图弥补了以下三个缺点:

1、当我们的数据是多类别且每个类别只有一个数值时,我们用柱状图会浪费很多的空间,而且显得单调。

2、当数据间差异较大(235 vs 18),会是对我们柱状图的纵坐标设定带来困扰,忽略极差会稀释我们小值类的差异。(当然 ,如果我们的大值只有那么一两个,可以单拎出来处理)

3、柱状图无法呈现数据间的层级结构

二、数据展示

我们的目的是为了呈现类间数值大小差异,如果有第二层,也顺便比较第二层的占比情况。

为了展示多各类别,我们利用的是省份的数据,excel表格中呈现如下:

 第二层、第三层为了树状的呈现而随机生成,也是为了说明,树层结构并不要求每个节点都有枝叶。

三、数据导入

我们先绘制只有一维的,只需要输入【省份】【关注类】两个列,这个其实更常用一点(我的角度)

province_type1 = pd.DataFrame(pd.read_excel('./各省市上市公司个数/矩形树图示例.xlsx'))
tree = []
name = [province_type1['省份'][i]+'\n'+str(province_type1['关注类A'][i]) for i in range(len(province_type1))]
for i in range(len(province_type1)):
    dic = {}
    dic["value"],dic["name"] = int(province_type1['关注类A'][i]),name[i]
    tree.append(dic)

①name--列表型数据结构,用于存放每个数据的label,这里我为了同时呈现数据对应的省份和大小,中间用了换行符(不用的话,在我们的树图上是一行,不好看)

②绘制矩形树图需要的是list,list里面是字典,key名指定为"name","value"。

③一定要注意的是,如果你画出来的图没有数据或者没有显示,检查是不是读excel数据中出现了问题,即上述代码中int的位置。

用于绘制treemap的数据结构如下所示:

四、图像绘制 

tm = (
      TreeMap()
      .add("关注类A",tree)
      .set_series_opts(label_opts=opts.LabelOpts(position='inside'))
      .set_global_opts(title_opts=opts.TitleOpts(title = '',subtitle = '2022/1/18-林老头ss'))
      )
 
tm.render('./绘图结果/矩形树图-例一.html')

position---指定label,即我们的name的位置,inside会居中显示。如果不加,默认top,在每个矩形上方显示。

结果如下所示:

 由上图可知,广东省、浙江省和江苏省在随机数据中排名前三。受显示区域的限制,数据较小或名字过长的矩形往往不能显示完全,需要交互式放大其数值。

五、树形结构

在加入树形结构后,我们需要在代码中相应增加key为“children"的数据

from pyecharts.charts import Page,TreeMap
from pyecharts import options as opts
import pandas as pd
import math
province_type1 = pd.DataFrame(pd.read_excel('./矩形树图示例.xlsx'))
tree = []
name = [province_type1['省份'][i]+'\n'+str(province_type1['关注类A'][i]) for i in range(len(province_type1))]
for i in range(len(province_type1)):
    dic = {}
    dic["value"],dic["name"] = int(province_type1['关注类A'][i]),name[i]
    if math.isnan(province_type1['关注类A-1'][i]) ==0:
        dic["children"] = [
                            {"name":province_type1['省份'][i]+"A-1:"+str(province_type1['关注类A-1'][i]),"value":int(province_type1['关注类A-1'][i])},
                            {"name":province_type1['省份'][i]+"A-2:"+str(province_type1['关注类A-1'][i]),"value":int(province_type1['关注类A-2'][i])}
                         ]
    if math.isnan(province_type1['关注类A1-1'][i]) ==0:
        dic["children"][0]["children"] = [
                                        {"name":"A1-1:"+str(province_type1['关注类A1-1'][i]),"value":int(province_type1['关注类A1-1'][i])},
                                        {"name":"A1-2:"+str(province_type1['关注类A1-1'][i]),"value":int(province_type1['关注类A1-2'][i])}
                                        ]
    tree.append(dic)
 
tm = (
      TreeMap()
      .add("关注类A的树",tree)
      .set_series_opts(label_opts=opts.LabelOpts(position='inside'))
      .set_global_opts(title_opts=opts.TitleOpts(title = '加油呀朋友们~',subtitle = '2022/1/18-林老头ss'))
      )
 
tm.render('./绘图结果/矩形树图-例二.html')

 如果没有枝叶的类,则不需要在"name""value"平级上加"children",如果枝叶中有两个以上类别,相当于是一个新的树,需要增加“children”,结构和树形一致,如下所示:

【“name”:“父节点”,

    "value": number,

   "children":【{“name”:“子节点一”,“value”:number},

                       {“name”:“子节点二”,“value”:number},

                       {“name”:“子节点三”,“value”:number}

                     】

子序列在显示区域允许的情况下,可以继续按上述结构增加。

绘制结果如下所示:

从上图我们可以看到,尽管我们为父类命名,但显示的结果只有最小类的名称和数值。

pyecharts图像交互性较强,可以通过点击不断聚焦类,放大图像,但由于不知道怎么呈现给大家,还是鼓励大家自己动手操作去探索叭~

总结

到此这篇关于python用pyecharts画矩形树图实例的文章就介绍到这了,更多相关python pyecharts画矩形树图内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python用pyecharts画矩形树图实例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python怎么用pyecharts画矩形树图

小编给大家分享一下python怎么用pyecharts画矩形树图,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、概念介绍矩形树图(Treemap),即矩形式树状结构图,利用矩形的面积表示数值的大小,颜色用于类别区分,常用
2023-06-28

python利用json和pyecharts画折线图实例代码

这篇文章主要介绍了python利用json和pyecharts画折线图实例,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-12-26

使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实现

以下是使用Python的turtle库绘制樱花、玫瑰和圣诞树的代码实现。樱花:```pythonimport turtledef draw_branch(branch_len):if branch_len > 3:if branch_len
2023-09-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录