精华内容
下载资源
问答
  • 如何绘制树状图
    2022-07-11 23:26:37

    目录

    一、实战场景

    二、主要知识点

    文件读写

    基础语法

    字符串处理

    文件生成

    数据构建

    三、菜鸟实战

    1、创建 python 文件

    2、运行结果


    一、实战场景

    实战场景:如何绘制树状图展示Python数据分析师的知识结构

    二、主要知识点

    • 文件读写

    • 基础语法

    • 字符串处理

    • 文件生成

    • 数据构建

    三、菜鸟实战

    马上安排!

    1、创建 python 文件

    """
    Author: 菜鸟实战
    实战场景:  如何绘制树状图展示Python数据分析师的知识结构
    """
    
    # 导入系统包
    import platform
    import random
    
    from flask import Flask, render_template
    from pyecharts import options as opts
    from pyecharts.charts import *
    
    print("Hello,菜鸟实战")
    print("实战场景:  如何绘制树状图展示Python数据分析师的知识结构 \n")
    
    web = Flask(__name__)
    
    # 构建数据
    data = [{
        "name": "Python数据分析师",
        "children": [
            {
                "name": "Python编程基础",
                "children": [
                    {"name": "Pandas", "value": 1111},
                    {"name": "Numpy", "value": 2222}
                ]
            },
            {
                "name": "数据仓库",
                "children": [
                    {"name": "MySQL", "value": 1111},
                    {"name": "Mongodb", "value": 2222},
                    {"name": "SQL Sever", "value": 3333},
                ]
            },
            {
                "name": "数理统计",
                "children": [
                    {"name": "统计学概括性度量", "value": 1111},
                    {"name": "离散程度度量", "value": 2222},
                    {"name": "数据的种类知多少", "value": 3333},
                    {"name": "数据整体状态", "value": 1111},
                    {"name": "标准计分和离差", "value": 2222},
                    {"name": "统计量和抽样分布", "value": 3333},
                    {"name": "双变量的相关分析", "value": 3333},
                    {"name": "独立性检验&拟合优度检验", "value": 3333},
                ]
            },
            {
                "name": "数据采集",
                "children": [
                    {"name": "Python基础数据采集", "value": 1111},
                    {"name": "Scrapy爬虫框架", "value": 2222},
                    {"name": "Gerapy爬虫管理框架", "value": 3333},
                ]
            },
            {
                "name": "数据可视化",
                "children": [
                    {"name": "Pyecharts", "value": 1111},
                    {"name": "Matplotlib", "value": 2222},
                    {"name": "Seaborn", "value": 3333},
                ]
            },
    
        ]
    }]
    
    
    def tree_charts() -> Tree():
        # 实例化对象
        tree = Tree()
        tree.add("", data,
                 # 折叠枝点
                 collapse_interval=2,
                 # 自下向上树图
                 # orient="BT",
                 # 自右向左树图
                 # orient="RL",
                 # 自上向下树图
                 # orient="TB",
                 # 发散树图
                 layout="radial",
                 ),
        # 全局置标题
        tree.set_global_opts(
            title_opts=opts.TitleOpts(title="如何绘制树状图展示Python数据分析师的知识结构", subtitle="菜鸟实战,坚持学习!")
        )
        return tree
    
    
    # 获取对象
    p = tree_charts()
    # 绘制图形,生成HTML文件的
    p.render('./templates/timeline_tree_charts.html')
    
    
    # 添加路由显示图表
    @web.route('/')
    def index():
        return render_template('timeline_tree_charts.html')
    
    
    if __name__ == "__main__":
        # 运行项目
        web.run(debug=False)
    
    print("Python 版本", platform.python_version())
    

    2、运行结果

    Hello,菜鸟实战
    实战场景:  如何绘制树状图展示Python数据分析师的知识结构

     * Serving Flask app 'py044' (lazy loading)
     * Environment: production
       WARNING: This is a development server. Do not use it in a production deployment.
       Use a production WSGI server instead.
     * Debug mode: off
     * Running on http://127.0.0.1:5000 (Press CTRL+C to quit)

     菜鸟实战,持续学习!  

    更多相关内容
  • QT绘制树状图,根据示例代码diagramscene修改,支持拖拽,编辑文字,修改背景颜色,字体大小和颜色,方框放大缩小,箭头连线等功能
  • JS插件绘制树状图

    2017-12-22 16:23:04
    JS绘制树状图插件 可用于绘制各种关系网络图等 插件体积小
  • 可视化神器Plotly绘制树状图

    千次阅读 2021-10-14 20:00:02
    今天给大家带来的是一篇关于Plotly绘图的文章:如何使用Plotly来绘制矩形树状图 Plotly文章 目前Plotly的文章更新到第17篇,推荐几篇文章: 闲聊 为什么Peter一直坚持写Plotly的文章?国庆节前有位读者加了Peter...

    大家好,我是Peter~

    今天给大家带来的是一篇关于Plotly绘图的文章:如何使用Plotly来绘制矩形树状图

    Plotly文章

    目前Plotly的文章更新到第17篇,推荐几篇文章:

    闲聊

    为什么Peter一直坚持写Plotly的文章?国庆节前有位读者加了Peter的VX:

    1、你的教程关于Plotly的对我帮助很大🦀

    2、本科大三就开始卷了😭

    3、山大学子,优秀👍

    以前还有另一位Plotly的读者,也是看了Peter的文章:

    所以大家一起好好学习,Peter也好好写文章,说不定哪天你看了就会受益~

    什么是树图

    树状图(tree diagram)是一种将层次结构式的构造性质,以图象方式表现出来的方法。主要是通过父子级的关系来表现的,比如:中国—广东—深圳,就是一个例子。中国和广东之间,广东和深圳之间都是这种关系的表现。

    下面是网上找到的一份关于树图的层级结构的图形,很经典:

    我们再看一幅现代的很有冲击力的树图:

    这种图形叫缓冲垫树状结构图(Cushion Treemap),它使用纹理使每个矩形在中间看起来像垫子一样”凸起”,并且逐渐变细到边缘。这种视觉效果利用了人类将这种类型的阴影解释为凸起的表面的优势,从而可以更快地识别出不同的矩形

    参考资源:

    1、Plotly官网:https://plotly.com/python/treemaps/

    2、矩形式树状结构图(Treemaps)-复杂层次结构的数据可视化:https://www.idesigntools.com/treemaps.html

    导入库

    本文中介绍的树图还是会使用 plotly_express 和 plotly.graph_objects 两种方法来绘制,下面还是先导入库:

    import pandas as pd
    import numpy as np
    
    import plotly_express as px
    import plotly.graph_objects as go
    from plotly.subplots import make_subplots  # 画子图
    

    基于plotly_express绘制

    2.1 基础树状图

    在绘制树图的时候是基于数据的列表形式

    name = ["中国","福建", "广东","厦门","深圳", "珠海", "湖北", "湖南", "长沙", "陕西","衡阳","咸阳","东莞"]
    parent = ["", "中国", "中国","福建", "广东", "广东", "中国", "中国", "湖南", "中国","湖南","陕西","广东"]
    
    
    fig = px.treemap(
        names = name,
        parents = parent)
    fig.update_traces(root_color="lightgrey")
    
    fig.update_layout(margin = dict(t=50, l=25, r=25, b=25))
    
    fig.show()
    

    2.2 基于DataFrame的树图

    上面的数据是我们自定义的列表形式,一般如果在pandas中,数据会是DataFrame的格式,如何绘制树图呢?

    在这里我们使用的plotly中自带的消费数据集:

    fig = px.treemap(
        df,  # 传入数据
        path=[px.Constant("all"),"day","sex","time"],  # 重点:传递数据路径
        values="tip"  # 数值显示使用哪个字段
    )
    
    fig.update_traces(root_color="lightskyblue") 
    
    fig.update_layout(margin=dict(t=30,l=20,r=25,b=30))   
    
    fig.show()
    

    还可以设置颜色参数:

    fig = px.treemap(
        df,
        path=[px.Constant("all"),"day","sex","time"],  # 重点:传递数据路径
        values="tip",
        color="time"   # 指定颜色变化的参数
    )
    
    fig.update_traces(root_color="lightskyblue")
    
    fig.update_layout(margin=dict(t=30,l=20,r=25,b=30))   
    
    fig.show()
    

    2.3 带有连续颜色变化的树图

    在这里采用的是gdp数据集:

    fig = px.treemap(
        df1,
        path=[px.Constant("world"),"continent","country"], # 路径
        values="pop",  # 值
        color="lifeExp",  # 颜色的取值
        hover_data=["iso_alpha"],  # 悬停数据
        color_continuous_scale="RdBu",  # 颜色变化的设置
        color_continuous_midpoint=np.average(df1["lifeExp"],
                                            weights=df1["pop"])
    )
    
    fig.update_layout(margin = dict(t=40, l=15, r=35, b=45))
    
    fig.show()
    

    2.4 基于离散颜色变化的树状图

    采用的还是基于消费的数据集:

    绘图代码如下:

    fig = px.treemap(
        df,   # 传入数据
        path=[px.Constant("all"), 'sex', 'day', 'time'],   # 数据路径
        values='total_bill',   # 采用的值
        color='time',   # 颜色
        color_discrete_map={'(?)':'lightgrey',   # 离散型颜色设置
                            'Lunch':'gold', 
                            'Dinner':'darkblue'})
    
    fig.update_layout(margin = dict(t=50, l=15, r=25, b=35))
    
    fig.show()
    

    3 基于go.Treemap绘制

    3.1 基础树状图

     name = ["中国","福建", "广东","厦门","深圳", "珠海", "湖北", "湖南", "长沙", "陕西","衡阳","咸阳","东莞"]
    parent = ["", "中国", "中国","福建", "广东", "广东", "中国", "中国", "湖南", "中国","湖南","陕西","广东"]
    
    
    fig = go.Figure(go.Treemap(  # go方法实现
        labels = name,
        parents = parent,
        root_color = "lightgrey"
    ))
    
    fig.update_layout(margin = dict(t=50, l=25, r=25, b=25))
    
    fig.show()
    

    3.2 不同颜色的树图

    多种方式来设置树状图的颜色

    1、方式1

    name = ["中国","福建", "广东","厦门","深圳", "珠海", "湖北", "湖南", "长沙", "陕西","衡阳","咸阳","东莞"]
    parent = ["", "中国", "中国","福建", "广东", "广东", "中国", "中国", "湖南", "中国","湖南","陕西","广东"]
    color = ["pink", "royalblue", "lightgray", "purple", "cyan", "lightgray", "lightblue", "lightgreen"]
    
    
    fig = go.Figure(go.Treemap(  
        labels = name,
        parents = parent,
        marker_colors = color   # 方式1:marker_colors参数设置
    ))
    
    fig.update_layout(margin = dict(t=50, l=25, r=25, b=25))
    
    fig.show()
    

    方式2:

    name = ["中国","福建", "广东","厦门","深圳", "珠海", "湖北", "湖南", "长沙", "陕西","衡阳","咸阳","东莞"]
    parent = ["", "中国", "中国","福建", "广东", "广东", "中国", "中国", "湖南", "中国","湖南","陕西","广东"]
    
    fig = go.Figure(go.Treemap(  
        labels = name,
        parents = parent,
    ))
    
    fig.update_layout(
        margin = dict(t=50, l=25, r=25, b=25),
        # 方式2:通过 treemapcolorway 参数设置
        treemapcolorway = ["pink","blue","red","lightblue","purple","royalblue"])
    
    fig.show()
    

    方式3:

    name = ["中国","福建", "广东","厦门","深圳", "珠海", "湖北", "湖南", "长沙", "陕西","衡阳","咸阳","东莞"]
    parent = ["", "中国", "中国","福建", "广东", "广东", "中国", "中国", "湖南", "中国","湖南","陕西","广东"]
    values = [0,10,20,30,44,55,60,70,88,96,127,150,180]
    
    
    fig = go.Figure(go.Treemap(  
        labels = name,
        parents = parent,
        values = values,
        marker_colorscale = 'Blues'  # 方式3
    ))
    
    fig.update_layout(
        margin = dict(t=20, l=25, r=25, b=25))
    
    fig.show()
    

    如果我们想控制所有的标签内容的大小是相同的,我们可以使用来uniformtext参数来进行控制。

    在这里我们采用的是一份在线的CSV文件:

    fig = go.Figure(go.Treemap(
        ids = df2.ids, 
        labels = df2.labels,  # 标签
        parents = df2.parents,  # 父级路径
        pathbar_textfont_size = 20,  # 路径的字体大小
        root_color = "lightblue"  # root下的颜色
    ))
    
    fig.update_layout(uniformtext=dict(minsize=10,mode="hide"),
                      margin=dict(t=50,l=25,r=25,b=25))
    
    fig.show()
    

    展开全文
  • 树状图怎么画|画树状图步骤

    千次阅读 2021-07-09 04:45:14
    我们通过word软件,就可以画树状图。02、之后我们点击word右上方功能区域中的“编辑”,即可打开编辑当中的工具,我们用里面的工具,画树状图的图形,如图所示。03、之后在弹出来的功能选项中,我们在插图主选项中,...

    01、首先我们需要打开word办公软件,我们点击电脑上的word图标,就可以打开。我们通过word软件,就可以画树状图。

    92e78f20871cf1c948414988c5048340.png

    02、之后我们点击word右上方功能区域中的“编辑”,即可打开编辑当中的工具,我们用里面的工具,画树状图的图形,如图所示。

    7b25fe057fd20fe6eb69dc970871f3ff.png

    03、之后在弹出来的功能选项中,我们在插图主选项中,点击“形状”,就可以在里面找到树状图需要的图像,插入到word中,如图所示。

    a752bd465fe3a92b3f27a1371b94ab5d.png

    04、之后就会弹出图形的选项卡,我们在里面可以看到各种图形,我们画树状图需要使用圆形、椭圆、方形,等图形的一个,小编选择椭圆作为演示,如图所示。

    55fb35f65c1cb962996ce4bca7b779a0.png

    05、之后我们鼠标在word的编辑界面上拖动鼠标,既可以画出一个椭圆,我们通过椭圆周围的点,可以调整椭圆的形状,之后我们鼠标按住椭圆内部,即可将椭圆拖动到合适位置,如图所示。

    9bfff1f2d781edfddb973d2a515401d0.png

    06、之后我们点击word主界面功能区域的“编辑”→“形状”→“直线”,我们选中直线后,在椭圆下面画出两个分叉,就是树状图的分叉线。我们点击分叉线的点,可以对线进行调整,我们调整到合适大小和位置即可,如图所示。

    a247ee2229fe231624a043f56a84aec2.png

    07、之后我们按照上面的方法,用word将树状图的所有图形画好,但是这个时候树状图是独立的,我们还需要合并,并且写上相应的功能,如图所示。

    1cda2ac971f2c71be0af3adc9b2c5c09.png

    08、之后我们在word的功能区域点击“编辑”,在最后一个选项中点击“选择”,如图所示。

    401e3d2e13f36934b5bdfb4403f366e9.png

    09、之后我们在弹出的选项卡中,点击选择对象,我们就可以使用这个功能,将我们画好的树状图进行合并操作,将树状图变成一个整体,而不是独立的,如图所示。

    f6baecc2c72dc5bba0a24a720548ae4a.png

    10、之后我们用鼠标拖动,将画好的树状图选中,周围就会出现很多的点点,如图所示。

    054e2698c6308a4667f2f98439a83cbc.png

    11、之后我们鼠标右键点击树状图,在弹出的选项卡中,选择两次“组合”,即可将树状图进行合并,成为一个整体的图形,线条间实现实质性连接,如图所示。

    b57bb8e826a1e85a6dd46aae65586b98.png

    12、之后我们鼠标点击一下树状图,因为已经是一个整体了,所以直接将所有的选中了。我们点击word功能区域的“格式”,在里面给图形边框和图形内部,分别填充上颜色,如图所示。

    d8c750519cfc70ef03ef2f666063e034.png

    13、之后我们鼠标分别点击树状图的图形,在里面写上需要的更能文字,就可以将树状图用word画好。这个方法是画树状图的完整过程方法,大家按照小编的方法,即可画出树状图。

    ad2d2801f016f01fe2e1b76ccb858c3a.png

    【树状图怎么画】就如上述的教程吗,按照以上的步骤来操作,一般都能完成设置。大家还有其他的windows系统下载后使用的疑问需要解决的话,欢迎上系统粉查看相关的教程。

    展开全文
  • 使用绘制树状图的节点,目的是创建交互式树状图,其叶子链接到它们所代表的热图。 目前处于开发的早期阶段。 去做 删除所有vis.js屎,这样我们就只需要必需的js和css文件 解析JSON数据,以便获得一组坐标
  • 在d3 中,绘制树状图,要用到层级布局这个概念: d3.hierarchy(data[, children]) 根据指定的层次结构数据构造一个根节点。指定的数据 data 必须为一个表示根节点的对象。比如: { "name": "Eve", "children": [ ...

    树状图

    在d3 中,绘制树状图,要用到层级布局这个概念:

    d3.hierarchy(data[, children])
    

    根据指定的层次结构数据构造一个根节点。指定的数据 data 必须为一个表示根节点的对象。比如:

    {
      "name": "Eve",
      "children": [
        {
          "name": "Cain"
        },
        {
          "name": "Seth",
          "children": [
            {
              "name": "Enos"
            },
            {
              "name": "Noam"
            }
          ]
        },
        {
          "name": "Abel"
        },
        {
          "name": "Awan",
          "children": [
            {
              "name": "Enoch"
            }
          ]
        },
        {
          "name": "Azura"
        }
      ]
    }
    

    指定的 children 访问器会为每个数据进行调用,从根 data 开始,并且必须返回一个数组用以表示当前数据的子节点,返回 null 表示当前数据没有子节点。如果没有指定 children 则默认为:

    function children(d) {
      return d.children;
    }
    

    返回的节点和每一个后代会被附加如下属性:

    在这里插入图片描述

    文档:https://www.d3js.org.cn/document/d3-hierarchy/#installing

    其中,

    • node.descendants():返回后代节点数组,第一个节点为自身,然后依次为所有子节点的拓扑排序
    • node.links():返回当前 nodelinks 数组, 其中每个 link 是一个定义了 sourcetarget 属性的对象。每个 linksource 为父节点, target 为子节点。

    同时,需要和tree生成器一起使用,来得到绘制树所需要的节点数据和边数据。

    文档: https://www.d3js.org.cn/document/d3-hierarchy/#tree

    其中,

    • d3.tree(),创建一个树状图生成器,使用默认的设置创建一个新的树布局

    • d3.tree().size([size]),定义树的大小。如果指定了 size 则设置当前系统树布局的尺寸为一个指定的二元数值类型数组,表示 [width, height] 并返回当前树布局。如果 size 没有指定则返回当前系统树布局的尺寸,默认为 [1, 1]。如果返回的布局尺寸为 null 时则表示实际的尺寸根据 node size 确定。

    • d3.tree.nodeSize([size]),如果指定了 size 则设置系统树布局的节点尺寸为指定的数值二元数组,表示为 [width, height] 并返回当前树布局。如果没有指定 size 则返回当前节点尺寸,默认为 null。如果返回的尺寸为 null 则表示使用 layout size 来自动计算节点大小。当指定了节点尺寸时,根节点的位置总是位于 ⟨0, 0⟩。

    • d3.tree().separation([separation]),定义邻居节点的距离。如果指定了 seperation, 则设置间隔访问器为指定的函数并返回当前树布局。如果没有指定 seperation 则返回当前的间隔访问器,默认为:

      function separation(a, b) {
        return a.parent == b.parent ? 1 : 2;
      }
      
      

      一种更适合于径向布局的变体,可以按比例缩小半径差距:

      function separation(a, b) {
        return (a.parent == b.parent ? 1 : 2) / a.depth;
      }
      

      间隔访问器用来设置相邻的两个节点之间的间隔。

    绘制

    1. 数据准备

    //定义边界	
    	var marge = {top:50, bottom:0, left:10, right:0};	
    	var svg = d3.select("svg");
    	var width = svg.attr("width");
    	var height = svg.attr("height");
    	
    	var g = svg.append("g")
    		.attr("transform","translate("+marge.top+","+marge.left+")");
    	
    	var scale = svg.append("g")
    		.attr("transform","translate("+marge.top+","+marge.left+")");
    	//数据
    	var dataset = {
    		name:"中国",
    		children:[
    			{
    				name:"浙江",
    				children:[
    					{name:"杭州" ,value:100},
    					{name:"宁波",value:100},
            			{name:"温州",value:100},
            			{name:"绍兴",value:100}
    				]
    			},
    			{
    				name:"广西",
    				children:[
    					{
    						name:"桂林",
    						children:[
    							{name:"秀峰区",value:100},
                				{name:"叠彩区",value:100},
                				{name:"象山区",value:100},
               					{name:"七星区",value:100}
    						]
    					},
    					{name:"南宁",value:100},
            			{name:"柳州",value:100},
            			{name:"防城港",value:100}
    				]
    			},
    			{
    				name:"黑龙江",
    				children:[
    					{name:"哈尔滨",value:100},
            			{name:"齐齐哈尔",value:100},
            			{name:"牡丹江",value:100},
            			{name:"大庆",value:100}
    				]
    			},
    			{
    				name:"新疆" , 
        			children:
        			[
    		            {name:"乌鲁木齐"},
    		            {name:"克拉玛依"},
    		            {name:"吐鲁番"},
    		            {name:"哈密"}
        			]
    			}
    		]
    	};
    

    2. 创建层级布局

    var hierarchyData = d3.hierarchy(dataset)
      .sum(function(d){
      return d.value;
    });
    

    3. 创建一个树状图

    //创建一个树状图
    var tree = d3.tree()
    .size([width-400,height-200])
    .separation(function(a,b){
    return (a.parent==b.parent?1:2)/a.depth;
    }) 
    

    4. 初始化树状图,也就是传入数据,并得到绘制树基本数据

    var treeData = tree(hierarchyData);
    
    var nodes = treeData.descendants();
    var links = treeData.links();
    

    5. 创建一个贝塞尔生成曲线生成器

    var Bézier_curve_generator = d3.linkHorizontal()
        		.x(function(d) { return d.y; })
        		.y(function(d) { return d.x; });
    

    6. 绘制边

    //绘制边
    g.append("g")
    .selectAll("path")
    .data(links)
    .enter()
    .append("path")
    .attr("d",function(d){
    var start = {x:d.source.x,y:d.source.y};
    var end = {x:d.target.x,y:d.target.y};
    return Bézier_curve_generator({source:start,target:end});
        		})
        		.attr("fill","none")
        		.attr("stroke","yellow")
        		.attr("stroke-width",1);
    

    注意,attr(“d”,function(d)这个函数第二个参数的格式要求。

    7. 常规:建立用来放在每个节点和对应文字的分组

    var gs = g.append("g")
        		.selectAll("g")
        		.data(nodes)
        		.enter()
        		.append("g")
        		.attr("transform",function(d){
        			var cx = d.x;
        			var cy= d.y;
        			return "translate("+cy+","+cx+")";
        		});
    

    8. 绘制节点和文字

    //绘制节点
      gs.append("circle")
      .attr("r",6)
      .attr("fill","white")
      .attr("stroke","blue")
      .attr("stroke-width",1);
    
      //文字
      gs.append("text")
      .attr("x",function(d){
      	return d.children?-40:8;//如果某节点有子节点,则对应的文字前移
      })
      .attr("y",-5)
      .attr("dy",10)
      .text(function(d){
      	return d.data.name;
      })
    

    在这里插入图片描述

    完整代码

    <body>
        <svg width="1000" height="1000"></svg>
        <script>
          var marge = {top:60,bottom:60,left:60,right:60}
          var svg = d3.select("svg")
          var width = svg.attr("width")
          var height = svg.attr("height")
          var g = svg.append("g").attr("transform","translate("+marge.top+","+marge.left+")");
          var scale = svg.append("g")
          //1. 准备数据
          var dataset = {
    		name:"中国",
    		children:[
    			{
    				name:"浙江",
    				children:[
    					{name:"杭州" ,value:100},
    					{name:"宁波",value:100},
            			{name:"温州",value:100},
            			{name:"绍兴",value:100}
    				]
    			},
    			{
    				name:"广西",
    				children:[
    					{
    						name:"桂林",
    						children:[
    							{name:"秀峰区",value:100},
                				{name:"叠彩区",value:100},
                				{name:"象山区",value:100},
               					{name:"七星区",value:100}
    						]
    					},
    					{name:"南宁",value:100},
            			{name:"柳州",value:100},
            			{name:"防城港",value:100}
    				]
    			},
    			{
    				name:"黑龙江",
    				children:[
    					{name:"哈尔滨",value:100},
            			{name:"齐齐哈尔",value:100},
            			{name:"牡丹江",value:100},
            			{name:"大庆",value:100}
    				]
    			},
    			{
    				name:"新疆" , 
        			children:
        			[
    		            {name:"乌鲁木齐"},
    		            {name:"克拉玛依"},
    		            {name:"吐鲁番"},
    		            {name:"哈密"}
        			]
    			}
    		]
      };
      //2. 创建层级布局
      var hierarchyData = d3.hierarchy(dataset)
        .sum(function(d){
        return d.value;
      });
      //3. 创建一个树状图
      var tree = d3.tree()
      .size([width-400,height-200])
      .separation(function(a,b){
      return (a.parent==b.parent?1:2)/a.depth;
      }) 
      //4. 初始化树状图,也就是传入数据,并得到绘制树基本数据
      var treeData = tree(hierarchyData);
      var nodes = treeData.descendants();
      var links = treeData.links();
      //5. 创建一个贝塞尔生成曲线生成器
      var Bézier_curve_generator = d3.linkHorizontal()
        		.x(function(d) { return d.y; })
            .y(function(d) { return d.x; });
      //6. 绘制边
      g.append("g")
        .selectAll("path")
        .data(links)
        .enter()
        .append("path")
        .attr("d",function(d){
    var start = {x:d.source.x,y:d.source.y};
    var end = {x:d.target.x,y:d.target.y};
    return Bézier_curve_generator({source:start,target:end});
        		})
        		.attr("fill","none")
        		.attr("stroke","yellow")
            .attr("stroke-width",1);
      //7. 常规:建立用来放在每个节点和对应文字的分组<g>
      var gs = g.append("g")
        .selectAll("g")
        .data(nodes)
        .enter()
        .append("g")
        .attr("transform",function(d){
          var cx = d.x;
          var cy= d.y;
          return "translate("+cy+","+cx+")";
        });
      //8. 绘制节点和文字
      gs.append("circle")
      .attr("r",6)
      .attr("fill","white")
      .attr("stroke","blue")
      .attr("stroke-width",1);
    
      //文字
      gs.append("text")
      .attr("x",function(d){
      	return d.children?-40:8;//如果某节点有子节点,则对应的文字前移
      })
      .attr("y",-5)
      .attr("dy",10)
      .text(function(d){
      	return d.data.name;
      })
    </script>
    </body>
    

    在这里插入图片描述

    展开全文
  • 使用R语言制作树状图

    千次阅读 2020-04-15 12:44:07
    用R语言画树状图要用到treemap 和readlx ,这两个包,可以在Rstudio中输入以下代码: ``` install.packages('treemap','readxl','gdata') ``` 在网上把疫情的数据获取到excel中,命名为hong.xls,并将其放在Rstudio...
  • Python应用实战代码-python爬取股票最新数据并用excel绘制树状图
  • 使用python爬取股票基金的最新数据消息,并用Excel绘制树状图一目了然
  • python绘制聚类分析树状图

    千次阅读 2022-01-12 17:33:44
    根据相似度从强到弱连接相应节点对,形成树状图; 根据实际需求横切树状图,获得社区结构。 安装plotly及相关依赖 0.安装python3环境 安装python3环境网络上资料比较多,请自行安装python3环境 1.安装plotly pip3 ...
  • 使用树状图的话,eCharts提供的图形组件也有点不太适合,因此在同事建议下使用goJs制作树状图,效果如下。 过程分布: 导入package 初始化模板(初始化的过程好像必须放在ngOnInit()中,如果放在http请求的回调函数...
  • 1.什么是多边形树状图? 多边形树状图,它是一种利用嵌套式多边形显示层次结构的方法,同时通过面积大小显示每个类别的数量大小。 多边形树状图采用多边形表示层次结构里的节点,父子节点之间的层次关系用多边形之间...
  • python绘制聚类树状图

    千次阅读 2021-02-07 13:26:08
    python绘制聚类树状图 import pandas as pd import plotly.figure_factory as ff import chart_studio.plotly as py import chart_studio chart_studio.tools.set_credentials_file(username="用户名", api_key='...
  • svg实现树状图

    2018-06-13 01:59:24
    网络资源拿出来与大SVG是目前最火热的图像文件格式,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形,它是基于XML,由W3C联盟进行开发。SVG可以实现无损缩放,在性能上要比其它格式的图片更好家...
  • 本示例是基于Typescript 和 D3 五版本绘制树状图。 网上绝大多数都是D3 3版本,四版本也有一些示例,比较少,5版本几乎没有。这里是结合TS 和 D3 5版本的一个示例: 直接上代码: /** * create by yanle * ...
  • 文章目录树状图样式构建树状图GIF演示1树状图中构建详细级别步骤1:创建新参数步骤 2:创建计算字段步骤 3: 使用新字段详细信息级别代替国家/地区GIF演示2 树状图样式 树状图是要在 Tableau 中创建的奇数图表。它...
  • 我数树状图一个的按钮(数据切换)</button> <button @click="changeDateBtn3">我数树状图三个的按钮(数据切换)</button> <div id="container" :style="{ height: '800px', width: '100%' }" /...
  • I have implemented an algorithm to solve the problem of clustering in a graph. I used the python library "python-graph" to represent the graph. Now, at each step of my computation (the algorithm is it...
  • excel树状图2.1. 简单的树状图2.2. 带有增长率的树状图2.3.1. 增长率配色2.3.2. VBA填充色块颜色 大家好,最近大A的白马股们简直跌妈不认,作为重仓了抱团白马股基金的养鸡少年,每日那是一个以泪洗面啊。 不过从...
  • Python画树状图

    千次阅读 2020-07-19 20:13:17
    import matplotlib.pyplot as plt import squarify my_dpi=96 plt.figure(figsize=(480/my_dpi, 480/my_dpi), dpi=my_dpi) squarify.plot(sizes=[13,22,35,5], label=["group A", "group B", "group C", "group D...
  • html实现的树状图

    热门讨论 2011-05-21 15:43:25
    jquery html实现的树状图,样式精美,带鼠标经过和点击时的样式
  • 树状图插件

    2014-08-07 11:27:49
    树状图插件,直接引用插件,方便快捷的制作树状图
  • Vuejs + D3可缩放树状图 在Vuejs中将更新为d3v4的实现。 演示版 是的。 。 依存关系 (> = 4.x,首选6.x)和npm 3+版本。 (6.x) 构建设置 # install dependencies npm install # serve with hot reload at ...
  • // Step:3 conifg ECharts's path, link to echarts.js from current page.// Step:3 为模块加载器配置echarts的路径,从当前页面链接到echarts.js,定义所需图表路径require.config({paths: {// echarts: './js'...
  • 绘制不同类型电影数量和票房树状图 数据展示 操作步骤 1、拖拽维度「电影类型」、度量「记录数」分别到行、列功能区; 2、智能显示选择树状图; 3、标记卡的颜色 — 编辑颜色 — 绿蓝发散 —...
  • 利用MATLAB绘制树状图的程序,可以根据自己需要修改。
  • 如何使用树状图标注沿着树的每个分支的距离,以便可以比较节点对之间的距离? 在下面的代码中,我 显示如何使用树状图返回的数据来标记水平 图中具有相应距离的段。关联的值 用键icoord和dcoord给出每个 图的三段倒...
  • 一个包,可在中绘制高度可修改的树状图。 可以很容易地修改树状图并将其添加到现有的ggplot对象中。 ggdendroplot将data.frame或矩阵作为输入,其中要对列进行聚类(按行)。 然后,ggdendroplot使用R 的dist和...
  • https://www.cnblogs.com/luruiyuan/p/8567090.html

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,523
精华内容 5,809
关键字:

如何绘制树状图