如何在 d3.js 中为条形图提供取景器功能。带有取景器的图表是这样 的http://nvd3.org/ghpages/lineWithFocus.html 我想要集成取景器功能的条形图是这样的 http://nvd3.org/ghpages/multiBar.html。谁能帮我这个。我正在寻找整整一周,但什么也找不到。
2 回答
其实你可以,但你必须做到。它非常简单!
从 nvd3.org 下载文件 获取文件“linePlusBarWithFocusChart.html”。 我们必须对其进行编辑。
我提出的是删除线部分的数据,以便只存在条形数据。
通过示例输入数据:
var testdata = [{
"key": "Quantity",
"bar": true,
"values": [
[1136005200000, 1271000.0],
[1138683600000, 1271000.0],
[1141102800000, 1271000.0],
etc. .]
}, {
"key": "Price", //Line chart data values are to be deleted.
"values": [
]
}]
最后要删除折线图的轴数据:
chart.y2Axis
.tickFormat(function(d) {
// return '$' + d3.format(',.2f')(d) //what was present in the example
return '';
});
chart.y4Axis
.tickFormat(function(d) {
// return '$' + d3.format(',.2f')(d) //what was present in the example
return '';
});
您可以从文件 nvd3.js - Line num: 6871 中关闭图例,其中定义了 model:linePlusBarWithFocusChart。
把 showLegend=false;
同型号下nvd3.js中的showTooltip函数下。
var showTooltip = function(e, offsetElement) {
if (extent) {
e.pointIndex += Math.ceil(extent[0]);
}
var left = e.pos[0] + ( offsetElement.offsetLeft || 0 ),
top = e.pos[1] + ( offsetElement.offsetTop || 0),
x = xAxis.tickFormat()(lines.x()(e.point, e.pointIndex)),
y = (e.series.bar ? y1Axis : y1Axis).tickFormat()(lines.y()(e.point, e.pointIndex)),
content = tooltip(e.series.key, x, y, e, chart);
nv.tooltip.show([left, top], content, e.value < 0 ? 'n' : 's', null, offsetElement);
};
现在,运行文件,你会发现只有条形图存在。这可能不是正确的方法,但它在可怕的情况下有所帮助。您可能还需要编辑掉一些不需要的元素。
随时提出任何疑问。
您要查找的内容尚未内置到库中。你最好的选择是看看:https ://github.com/novus/nvd3/blob/master/src/models/lineWithFocusChart.js
克隆 repo 并构建您自己的模型 barWithFocusChart.js(我相信他们会喜欢拉取请求:])
您可以找到有关如何在 d3.js 中构建条形字符的教程:http: //mbostock.github.io/d3/tutorial/bar-2.html
您可以阅读协调视图: http ://square.github.io/crossfilter/