Tôi mới dùng d3js, nhưng quen thuộc với javascript và nguyên tắc hiển thị dữ liệu.d3js - Tạo biểu đồ giống như Asterplot (ví dụ bao gồm)
Tôi đã cố gắng đạt được một hiệu ứng để hình dung 2 thứ nguyên của dữ liệu bằng cách sử dụng biểu đồ cốt truyện aster, nhưng không thể thực sự làm việc này như mong đợi.
Được đính kèm, bạn sẽ tìm thấy sơ đồ mà tôi đang cố gắng tạo lại và mã ví dụ của mình. Nó sẽ là rất lớn nếu bạn có thể cho tôi biết làm thế nào để làm cho nó hoạt động - hoặc làm thế nào để tối ưu hóa nó! :)
Đây là cách tôi nghĩ rằng các dữ liệu và mã nên trông giống như .. kinda .. (Pseudo-Mã đến ..)
dữ liệu Ví dụ:
var testData = {
maxPoints: 10,
color: '#bababa',
border: {
width: 1,
color: '#ffffff'
},
items: [
{
name: 'Looks',
color: '#2976dd',
weight: 0.37,
points: 8
},{
name: 'Charm',
color: '#87bd24',
weight: 0.03,
points: 5
},{
name: 'Honesty',
color: '#406900',
weight: 0.16,
points: 7
},{
name: 'Humour',
color: '#ffb200',
weight: 0.31,
points: 9
},{
name: 'Intelligence',
color: '#f78200',
weight: 0.12,
points: 0
}
]
};
Ví dụ mã:
var archs = [];
// Loop through each item
var circleRadius = 400;
var innerRadius = 100;
var startAngle = 0;
var endAngle = 0;
for (var i = 0; i < testData.items.length; i++) {
// Draw each arch
var maxPoints = testData.maxPoints;
var archHeight = (circleRadius - innerRadius)/maxPoints;
var startRadius = innerRadius;
endAngle += testData.items[i].weight;
for (var j = 0; j < maxPoints; j++) {
var color = testData.color;
// draw arch - don't know how to colorize accordingly..
if (testData.items[i].points < j) {
// color this arc somehow..
color = testData.items[i].color;
}
d3.svg.arc()
.startAngle(startAngle)
.endAngle(endAngle)
.innerRadius(startRadius)
.outerRadius(startRadius+archHeight);
// Increase startRadius
startRadius += archHeight;
}
// Increase startAngle
startAngle = endAngle;
}
Bằng cách nào đó mã của tôi trông phức tạp hơn .. Mặc dù nó vẫn là mã giả .. Tôi vẫn đang vật lộn .. Nếu ai đó có thể cho tôi một gợi ý hoặc một số mã làm việc để bắt đầu từ tôi sẽ rất biết ơn!
Cảm ơn trước - Chris
Bạn đã thấy cái này: http://bl.ocks.org/bbest/2de0e25d4840c68f2db1? Nếu có, điều gì sẽ ngăn cản bạn sử dụng nó làm cơ sở? – Arthur
Hey - Tôi đã nhìn thấy mã này! Tôi vẫn còn thiếu một số pricinples của D3JS logic .. Một cách khác là để tạo ra Pie/Donu-Charts tập trung và để co lại outerRadius .. Nhưng tôi nghĩ theo cách của tôi sẽ là legit là tốt. Sự cố với AsterPlot: Tôi cần vẽ chế độ xem lưới như trong ví dụ hình ảnh - đó là lý do tại sao tôi phải thực hiện một số phép thuật lặp:/ –
OK, tôi sẽ trả lời khi tôi tìm thấy thời gian – Arthur