【问题标题】:D3 Stacked bar chartD3 堆积条形图
【发布时间】:2014-10-01 07:18:35
【问题描述】:

您好,我创建了一个垂直堆积条形图。我的数据在 csv 文件中。我的 x 比例是有序的。按照我的 x 比例应该是我的时间比例的要求。我应该做些什么改变来制作我的 x 轴时间刻度。我只有有限的时间来完成这个。这是我的代码

var x = d3.scale.ordinal()
     .rangeRoundBands([0, width], .1);


var xAxis = d3.svg.axis()
      .scale(x).ticks(5)
    .orient("bottom");  

【问题讨论】:

  • 尝试一个时间尺度,比如 var x = d3.time.scale().domain(d3.extent(dates)) stackoverflow.com/questions/20181286/…
  • 另一种选择是继续使用序数比例,但通过使用d3.time.interval range function 创建所有日期的数组来定义比例的域。然后使用日期格式化函数作为轴刻度格式化函数。这种方法与@Maggie 建议的方法之间的区别在于,在真正的时间尺度下,日期单位的间隔不均匀(例如,月份,可以有不同的天数),而宽度不均匀。使用序数比例,它们都将被绘制到相同的宽度。
  • 说,@AmeilaBR,在我发布之前,您的解释无意中为我解决了一个问题。谢谢!
  • 您好,感谢您的回复。但是我不能使用指定的域,因为我的数据是动态的。我想以数据动态出现的方式更改代码。我暂时只使用 CSV 文件。我不能用一些特定的日期值对数组进行硬编码。请尽快提出解决方案。

标签: javascript svg d3.js


【解决方案1】:

将您的 CSV 结构放在这里。 很可能您的解决方案是

 parse = d3.time.format("%H:%M:%S").parse,
 format = d3.time.format("%X");

您的 CSV 文件时间列中的位置应类似于:'hour:minute:second' 格式。

并在轴上传递“格式”值

如需准确答案,请将您的代码放在这里! 否则你可以refer this

【讨论】:

  • 知道了。非常感谢大家及时回复。
  • 你有成功的解决方案吗?
  • 是的,必须更改时间尺度和大量更改,现在它使用静态数据。需要更改为动态。我希望将 CSV 转换为 JSON 不是一项艰巨的工作。是吗?
  • CSV 转 Json 太简单了。请记住,CSV 遵循列结构,而 JSON 遵循“键”并且它是“值”。如果您需要,如果可以帮助您。只需提供您的示例数据。
  • JSON 行:{"date":"1/5/2014","allocated":"14.14","unallocated":"7.14"} 和 csv 文件:date,allocated,unallocated( val1,val2,val3)
猜你喜欢
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 2019-06-19
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
相关资源
最近更新 更多