Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用D3.js对地图(层次结构)进行排序_Javascript_Sorting_D3.js - Fatal编程技术网

Javascript 如何使用D3.js对地图(层次结构)进行排序

Javascript 如何使用D3.js对地图(层次结构)进行排序,javascript,sorting,d3.js,Javascript,Sorting,D3.js,目前我正在学习如何通过D3.js和D3的层次结构来处理数据,但我还不能对地图结构的地图进行排序 给定以下数据集 continent,country,city,population Americas,US,Los Angeles,232324 Americas,US,New-York,120303 Asia,INDIA,Delhi,4533003 Asia,CHINA,Beijing,30234 Europe,FRANCE,Paris,1002000 Europe,GERMANY,Berlin,3

目前我正在学习如何通过D3.js和D3的层次结构来处理数据,但我还不能对地图结构的地图进行排序

给定以下数据集

continent,country,city,population
Americas,US,Los Angeles,232324
Americas,US,New-York,120303
Asia,INDIA,Delhi,4533003
Asia,CHINA,Beijing,30234
Europe,FRANCE,Paris,1002000
Europe,GERMANY,Berlin,394223
我在前三个选项卡上生成地图地图,按(1)大陆(降序)应用层次结构和顺序

d3hierarchy如下所示,子项按发送顺序排序:

我正在尝试对层次结构进行排序:

  • 按大陆(DESC)-已完成
  • 按国家(ASC)
  • 按城市(描述)
  • 搔了几个小时的头后,我真的无法对后续的分类(国家和城市)进行排序。你最好的方法是什么

    我主要使用了以下D3资源:

    自d3.sort起:

    对该节点的子节点(如果有)以及该节点的每个子节点进行排序

    为了独立地对每个级别进行排序,必须在相同级别上对节点进行比较和排序,如以下示例所示:

    d3hierarchy.sort(function (a, b) 
    {
          if (a.height == 3 && b.height == 3) {
            return d3.ascending(a.data[0], b.data[0])
          }
    
          if (a.height == 2 && b.height == 2) {
            return d3.descending(a.data[0], b.data[0])
          }
    
          if (a.height == 1 && b.height == 1) {
            return d3.ascending(a.data[0], b.data[0])
          }
    
          // getting to the leaf
          if (a.height == 0 && b.height == 0) {
            return d3.descending(a.data.Population, b.data.Population)
          }
    });
    
    d3hierarchy.sort(function (a, b) 
    {
          if (a.height == 3 && b.height == 3) {
            return d3.ascending(a.data[0], b.data[0])
          }
    
          if (a.height == 2 && b.height == 2) {
            return d3.descending(a.data[0], b.data[0])
          }
    
          if (a.height == 1 && b.height == 1) {
            return d3.ascending(a.data[0], b.data[0])
          }
    
          // getting to the leaf
          if (a.height == 0 && b.height == 0) {
            return d3.descending(a.data.Population, b.data.Population)
          }
    });