我目前正在重新设计一些可视化,从 R 的静态嵌入式输出到使用 angular-nvd3 的交互式图形。我已经取得了相当大的进展,并且几乎完成了重新实现所有必要的选项。
然而,最后回避我的部分是弄清楚如何为所有数据点添加持久标签。
虽然我为此定制了工具提示,但将名称显示为切换是客户请求之一,所以我认为我无法绕过它。
有没有内置的方法可以做到这一点?我无法通过 nvd3 文档找到任何内容。
我已经包含了参考散点图示例中的代码- 我的代码非常具体,因此更容易使用。
var app = angular.module('plunker', ['nvd3']);
app.controller('MainCtrl', function($scope) {
$scope.options = {
chart: {
type: 'scatterChart',
height: 450,
color: d3.scale.category10().range(),
scatter: {
onlyCircles: false
},
showDistX: true,
showDistY: true,
tooltipContent: function(key) {
return '<h3>' + key + '</h3>';
},
duration: 350,
xAxis: {
axisLabel: 'X Axis',
tickFormat: function(d){
return d3.format('.02f')(d);
}
},
yAxis: {
axisLabel: 'Y Axis',
tickFormat: function(d){
return d3.format('.02f')(d);
},
axisLabelDistance: -5
},
zoom: {
//NOTE: All attributes below are optional
enabled: false,
scaleExtent: [1, 10],
useFixedDomain: false,
useNiceScale: false,
horizontalOff: false,
verticalOff: false,
unzoomEventType: 'dblclick.zoom'
}
}
};
$scope.data = generateData(4,40);
/* Random Data Generator (took from nvd3.org) */
function generateData(groups, points) {
var data = [],
shapes = ['circle', 'cross', 'triangle-up', 'triangle-down', 'diamond', 'square'],
random = d3.random.normal();
for (var i = 0; i < groups; i++) {
data.push({
key: 'Group ' + i,
values: []
});
for (var j = 0; j < points; j++) {
data[i].values.push({
x: random()
, y: random()
, size: Math.random()
, shape: shapes[j % 6]
});
}
}
return data;
}
});