Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
D3.js d3可根据簇大小进行调整的有序标度_D3.js - Fatal编程技术网

D3.js d3可根据簇大小进行调整的有序标度

D3.js d3可根据簇大小进行调整的有序标度,d3.js,D3.js,如何根据每个嵌套组在每个簇中需要多少空间才能保持恒定的条形宽度来移动每个嵌套组的起点?有序比例为每个簇分配相同的空间,然后减小条宽度以容纳更多条,但我想以线性方式进行调整以保持条大小。有什么想法吗 谢谢你试过用“线性”替换“序数”吗。。因为您可以像在顺序比例中一样指定多个域和范围值,d3将像顺序比例一样使用所有域和范围值,但保持平滑的线性插值。。看看这是怎么回事 var scale=d3.scale.linear().域([1,2,3,4]).范围([1,203004000]) 好的,在获得更

如何根据每个嵌套组在每个簇中需要多少空间才能保持恒定的条形宽度来移动每个嵌套组的起点?有序比例为每个簇分配相同的空间,然后减小条宽度以容纳更多条,但我想以线性方式进行调整以保持条大小。有什么想法吗

谢谢

你试过用“线性”替换“序数”吗。。因为您可以像在顺序比例中一样指定多个域和范围值,d3将像顺序比例一样使用所有域和范围值,但保持平滑的线性插值。。看看这是怎么回事

var scale=d3.scale.linear().域([1,2,3,4]).范围([1,203004000])


好的,在获得更多的洞察力之后,看起来你必须复制原始比例,并对其进行修改,以便为每个具有不同颜色的对象创建新比例。。。嗯,规模。有趣的是,这个明显的线索直到现在才进入我的脑海

我将该d3示例复制到JSFIDLE中,并对其进行了一些修改,似乎效果不错。这就是你想要的效果吗

我基本上只是用这些枪替换了示例中无害的forEach循环

data.forEach(function(d,i){/*-=======================*/
  var myNames = d3.keys(d).filter(function(key) { ////
  if(key !== "State" && d[key]){ /*-==============-*/
    allAgeNames[key]
        = true;
    return true;
  } return false;

  //==========
  xScales[i] = d3.scale.ordinal();/*==========*/
  d.ages = myNames.reduce(function(arr, name) {
    if(+d[name]) arr.push({
    value:+d[name],
     x:xScales[i],
      name: name
    });/*===*/
     return arr;
   },[]);/*

 //||||||||||||||||||||||||||==========================----*/
 xScales[i].domain(myNames).rangeRoundBands([0, x.rangeBand()], 0);
    d.x = /*|_|_|_|_|_*/
   xScales[i];
  d.ages.x =
 xScales[i]
});

我在开玩笑,堆栈溢出不会让我在没有参考代码的情况下链接到JSFIDLE。。。。所以笑话就出来了。

不知道自己在做什么就很难说。听起来您需要根据条数调整标尺的输出范围。是否可以为每个簇重置?我正试图创建一个分组条形图,如本例所示,但每个组中具有相同条形宽度的可变条形图数量。您需要存储每个组需要偏移多少的信息,可以使用数据,也可以在全局变量中。我可以从每个组中的条形图数量*条形宽度中获得。实现偏移量的最佳方法是什么?如我所说,要么将其作为数据的一部分,要么在全局变量中跟踪当前偏移量。如果数据集发生更改,是否可以动态执行此操作?我认为可以。。我的意思是,d3音阶非常通用,你可以随时给它一个新的领域和/或范围。事实上,大多数(如果不是所有的话)scale方法都可以随时调用,它们都只是调整一些配置变量并调用相同的内部“rescale”函数,该函数使用新配置返回相同的比例。但正如其他人所评论的,在问题中信息有限的情况下,很难给出一个好的答案。也许您可以包括一个示例。例如,在data.csv中添加一个新的状态xxx和CA值。我希望在没有特定状态的数据时消除组间的空白。好吧,那不一样。。你不想缺牙吧?看起来您最好的选择可能是克隆标尺(
d3示例中的x1
),可能与初始
数据同时克隆。forEach
,并为每组分配一个标尺。由于x0仅作用于一个集合(状态),因此当数据更改和域/范围更新时,它应该能够缩放到正确的大小,没有其他集合依赖于它。您可能需要从域和范围集中删除该值(对于单个比例),以保持颜色一致性。