Я новичок в d3js, но знаком с javascript и принципами визуализации данных.d3js - Создание диаграмм типа Asterplot (пример включен)
Я попытался достичь эффекта, чтобы визуализировать 2 измерения данных, используя диаграмму диаграммы астра, но не может заставить эту вещь работать, как ожидалось.
В комплекте вы найдете диаграмму, которую я пытаюсь воссоздать, и мой пример кода. Было бы огромно, если бы вы могли рассказать мне, как заставить его работать - или как его оптимизировать! :)
Это, как я думаю, что данные и код должен выглядеть .. вроде .. (Псевдо-код входящий ..)
Пример данных:
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
}
]
};
Пример кода:
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;
}
Как-то мой код выглядит гораздо сложнее .. хотя это все еще псевдокод. Я все еще боюсь. Если кто-то может дать мне подсказку или какой-то рабочий код, чтобы начать с того, что я был бы очень благодарен!
Заранее спасибо - Крис
Вы это видели один: http://bl.ocks.org/bbest/2de0e25d4840c68f2db1? Если да, то что помешало бы вам использовать его в качестве базы? – Arthur
Эй, я видел этот код! Я по-прежнему не хватает некоторых достоинств логики D3JS. Еще один способ - создать концентрические Pie/Donu-Charts и урезать внешний Radius. Но я думал, что мой путь будет законным. Проблема с AsterPlot: мне нужно нарисовать сетку, как в примере с изображением - вот почему мне нужно сделать некоторую петлевую магию:/ –
OK, я попробую ответить, когда найду какое-то время – Arthur