Tôi đang sử dụng nvd3.js để tạo biểu đồ đường hiển thị xếp hạng mà tôi đã tính theo thời gian. Tôi có thêm thông tin cho từng điểm dữ liệu riêng lẻ (xếp hạng) và muốn có mỗi điểm dữ liệu trên liên kết biểu đồ đến một trang duy nhất có thêm thông tin về điểm dữ liệu cụ thể đó.Thêm các liên kết duy nhất vào tất cả các điểm dữ liệu d3.js trong biểu đồ
Ví dụ: Tôi muốn di chuột qua điểm dữ liệu đầu tiên trên biểu đồ (x: 1345457533, y: -0.0126262626263) và nhấp vào nó để truy cập trang cụ thể (http: // www.example.com/info?id=1) cung cấp thêm thông tin về xếp hạng hoặc điểm dữ liệu đó. Mỗi điểm dữ liệu có một id duy nhất và url duy nhất mà tôi muốn liên kết đến.
Đây là mã mà tôi đang sử dụng để tạo ra các đồ thị:
nv.addGraph(function() {
var chart = nv.models.lineChart();
chart.xAxis
.axisLabel('Time')
.tickFormat(d3.format('r'));
chart.yAxis
.axisLabel('Rating')
.tickFormat(d3.format('.2f'));
d3.select('#chart svg')
.datum(data())
.transition().duration(500)
.call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
function data() {
var data = [ { x: 1345457533, y: -0.0126262626263 },
{ x: 1345457409, y: 0.0224089635854 },
{ x: 1345457288, y: 0.0270935960591 },
{ x: 1345457168, y: -0.0378151260504 },
{ x: 1345457046, y: -0.115789473684 } ]
return [
{
values: data,
key: "Sample1",
color: "#232066"
}
];
}
HTML:
<div id="chart">
<svg></svg>
</div>
Và đây là một working example.
[Thông số SVG] (http://www.w3.org/TR/SVG/linking.html) mô tả cách thêm liên kết vào phần tử. Bạn có thể cung cấp một ví dụ hoàn chỉnh về jsfiddle không? Tôi đã cố gắng để có được mã của bạn làm việc, nhưng tôi phải mất một cái gì đó. –
@LarsKotthoff đây là [working jsfiddle] (http://jsfiddle.net/66hAj/). –
Cảm ơn. Tôi đã có một cái nhìn vào nó và tiếc là nvd3.js không cung cấp cho bạn loại truy cập cấp thấp mà bạn cần để đạt được những gì bạn muốn. Bạn không thể nhận được các yếu tố điểm hoặc cửa sổ bật lên. Vì vậy, về cơ bản bạn có 3 lựa chọn. Bạn có thể sửa đổi nvd3.js để làm những gì bạn muốn. Điều này không quá khó. Hoặc bạn có thể làm điều đó trong d3.js đơn giản, điều này sẽ cho phép bạn truy cập mọi thứ. Điều này cũng không quá khó. Thứ ba, bạn có thể thử xác định thủ công các phần tử sau khi nvd3.js đã thực hiện xong và thêm những gì bạn muốn. Hacky và rất có thể khó khăn, không được khuyến khích. –