【问题标题】:Bars on D3 Bar Graph not showing upD3 条形图上的条形不显示
【发布时间】:2015-09-03 05:22:49
【问题描述】:

我已经盯着这段代码看了好几个小时了,也许它很明显或者只是需要一个新的眼睛,但我很想弄清楚为什么图表上的条没有出现??

这是它的小提琴: http://jsfiddle.net/u7zs3jwo/1/

这是 JSON:

var bardata = [
   {
      "ts":1431728734,
      "interval":12,
      "method":"GET",
      "host":"beta.familysearch.org",
      "aggs":{    
         "con":{     //Connect
            "25":6,
            "50":6,
            "75":6,
            "90":7.1,
            "95":7.55,
            "99":7.91,
            "mn":6,
            "mx":8,
            "avg":6.3,
            "stddv":0.67
         },
         "count":10,
         "srvbsy":{     
            "25":2100.75,
            "50":2272,
            "75":3038.25,
            "90":3571.4,
            "95":3627.2,
            "99":3671.84,
            "mn":920,
            "mx":3683,
            "avg":2452.6,
            "stddv":836.3
         }
      }
   }
];

提前感谢您的帮助!!!

【问题讨论】:

  • 循环的地方很奇怪。看起来您正在循环遍历数据并为每个数据项创建一个 SVG 并为每个数据项转换此 SVG 等....这是意图吗?
  • 向d3传递数据时,最好使用对象数组。此外,您的数据还不清楚最终的条形图应该是什么样子。应该绘制哪些值,哪些不应该绘制?
  • @Alex_B 哎呀!我忘了摆脱循环。我只附加了整个阵列的一部分(整个阵列有 50 多个副本,如上所示)。目的是遍历所有 50 个 srvbsy.mx 并将它们全部绘制在同一个图表上。我想如果我至少可以在那里获得一个值,那么我就可以通过循环获得另外 50 个。

标签: javascript d3.js bar-chart


【解决方案1】:

传入D3的数据必须是数组的形式。正如您的代码所代表的那样,您正在传递一个值。我假设您只想绘制一个条形图,即“mx”的值。

只需像下面这样更改您的代码,该行就会显示出来。

将传入的值改为数组。

bardata = {
    ...
    "mx":[3683],
    ...
}

并更改缩放函数以使用“mx”数组的第一个索引。

var vGuideScale = d3.scale.linear()
    .domain([0, bardata[i].aggs.srvbsy.mx[0]]) // <-- here
    .range([height, 0])

http://jsfiddle.net/u7zs3jwo/2/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 2013-08-31
    • 2018-09-28
    • 2022-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多