【发布时间】:2013-09-17 15:26:31
【问题描述】:
我有以下数据集:
var data = [
{
"air_used": 0.660985,
"datestr": "2012-12-01 00:00:00",
"energy_used": 0.106402
},
{
"air_used": 0.824746,
"datestr": "2013-01-01 00:00:00",
"energy_used": 0.250462
} ...
]
我想绘制一个条形图(用于 air_used)和折线图(用于 energy_used),如下所示:
我的问题是,目前,使用我使用的 x 比例,图表看起来像这样 - 基本上条形图的位置错误,最后一个条形图从图表上掉下来:
这是一个包含完整代码和工作图的 JSFiddle:http://jsfiddle.net/aWJtJ/4/
为了实现我想要的,我认为我需要修改 x 比例,以便在第一个数据点之前和最后一个数据点之后有额外的宽度,并且条形图是全部向左移动每个条宽度的一半。
谁能帮我弄清楚我需要用 x-scale 做什么?
我已尝试在域中添加一个额外的月份 - 这可以防止最后一个条从图表的末尾掉落,但它也添加了一个我不想要的额外刻度,并且它不能固定位置的折线图和刻度。
如果可能,我想继续使用 x 轴的时间刻度,而不是序数刻度,因为我想使用 D3 聪明的基于时间的刻度格式化程序和日期解析器,例如xAxis.ticks(d3.time.weeks, 2)。
【问题讨论】:
-
我已经完成了一个基本的修复工作,但是 (1) 感觉很笨拙,并且 (2) x 轴线现在没有到达应有的位置:jsfiddle.net/aWJtJ/5
-
另外,月份的宽度也不同,例如这个问题:stackoverflow.com/questions/12186366/…
-
要解决月份差异宽度问题,您应该考虑根据时间戳的月/年部分使轴序号,然后使用自定义格式化程序指定刻度标签。然后,您可以使用范围带来处理条形宽度:github.com/mbostock/d3/wiki/…
标签: d3.js