Это довольно сложный проект для новичка в Protovis, но, может быть, вы могли бы помочь мне разделить его на удобоваримые куски?
Я хотел бы построить «интерактивную диаграмму с областями», как показано здесь:
Во-первых, это данные... У меня есть данные по провинциям в Excel:
Province Year 10 100 1000 10000 A 1970 2 4 6 3 A 1971 3 6 8 5 B 1970 6 9 12 6 B 1971 4 8 11 8 .... ... . . . .
Для каждой провинции и года я хотел бы иметь возможность нарисовать диаграмму с областями:
vis.add(pv.Area)
.data(data.ProvinceA[1970])
.bottom(1)
.interpolate("basis")
.left(function(d) x(d.x))
.height(function(d) y(d.y))
.fillStyle("rgb(21,173,210)")
.anchor("top").add(pv.Line)
.lineWidth(3);
Затем я хотел бы добавить 2 типа интерактивности:
- Выбор провинции
- Ползунок времени
Вместе флажки выбора и ползунок времени определяют, какие области видны в любой момент времени. Если, например, выбрана провинция А и указан год 1984, отображается только эта область. Если ползунок времени теперь перетаскивается, для провинции А теперь отображаются соответствующие годы. Если отмечена другая провинция, области накладываются друг на друга, и обе области перерисовываются при перемещении ползунка времени.
Протовис вопросы:
- Как отформатировать данные (провинция, год, x, y) для этого приложения?
- Как добиться привязки флажков к области?
- Как реализовать ползунок времени? Внутри Protovis или как внешний компонент со слушателями, которые запускают повторный рендеринг графика?