Создайте столбчатую диаграмму Plottable.js с использованием того же набора данных

Я пытаюсь создать столбчатую диаграмму с использованием plottable.js из того же набора данных. Является ли это возможным?

Вот мой примерный набор данных

var data = [{ x: 0, y: 1, m: 10 },
            { x: 1, y: 1, m: 9 },
            { x: 2, y: 3, m: 5 },
            { x: 3, y: 2, m: 5 },
            { x: 4, y: 4, m: 8 },
            { x: 5, y: 3, m: 7 },
            { x: 6, y: 5, m: 5 }];

В примере, размещенном на http://plottablejs.org/components/plots/stacked-bar/, он использовал два набора данных.

var plot = new Plottable.Plots.StackedBar()
           .addDataset(new Plottable.Dataset(primaryData).metadata(5))
           .addDataset(new Plottable.Dataset(secondaryData).metadata(3))
           .x(function(d) { return d.x; }, xScale)
           .y(function(d) { return d.y; }, yScale)
           .attr("fill", function(d, i, dataset) { return dataset.metadata(); }, colorScale)
           .renderTo("svg#example");

Мой вопрос заключается в том, что, поскольку я использую один и тот же набор данных, и мне нужно изменить функцию 'y' на две отдельные функции, примерно так:

.y(function(d) { return d.y; }, yScale)
.y(function(d) { return d.m; }, yScale)

Является ли это возможным? Если да, то как?

Спасибо...

1 ответ

Решение

Вы можете создать два разных Plottable.Datasetна основе тех же данных.

Итак, начните так:

var ds1 = new Plottable.Dataset(data);
var ds2 = new Plottable.Dataset(data);

Однако позже вам нужно будет различить два набора данных, чтобы узнать, какой атрибут использовать, поэтому вам следует добавить метаданные.

var ds1 = new Plottable.Dataset(data, {name: "ds1"});
var ds2 = new Plottable.Dataset(data, {name: "ds2"});

позже, вы можете ссылаться на имя набора данных, чтобы узнать, какое значение вернуть в вызове.y()

plot.y(function(d, i, ds){
  if(ds.metadata().name == "ds1"){
    return d.y;
  }
  else{
    return d.m;
  }
}, yScale);
Другие вопросы по тегам