alexlenail / Axial

Interactive Visualizations for High Dimensional Genomics Data
http://alexlenail.me/Axial/
MIT License
6 stars 2 forks source link

Proposal: d3-dataframe #15

Open alexlenail opened 5 years ago

alexlenail commented 5 years ago

D3 could come with a simple representation of matrix data.

Earlier sketch of roughly what this would look like:

matrix = {
        values: [[1, 2], [3, 4]], // sorted row-wise by default

    rows_iter:         function () { return this.values },
    columns_iter:      function () { return iterator_over_the_transpose_of(this.values) },
    flat_rows_iter:    function () { return iterator_over_flattened(this.values) },
    flat_columns_iter: function () { return iterator_over_the_flattened_transpose_of(this.values) },

    rows:              function () { return copy(this.values) },
    columns:           function () { return copy(transpose(this.values)) },
    flat_rows:         function () { return copy(flattened(this.values)) },
    flat_columns:      function () { return copy(flattened(transpose(this.values))) },

    transpose: function() {
      return {
        values: transpose(this.values),

        rows_iter:         function () { return this.values },
        columns_iter:      function () { return iterator_over_the_transpose_of(this.values) },
        flat_rows_iter:    function () { return iterator_over_flattened(this.values) },
        flat_columns_iter: function () { return iterator_over_the_flattened_transpose_of(this.values) },

        rows:              function () { return copy(this.values) },
        columns:           function () { return copy(transpose(this.values)) },
        flat_rows:         function () { return copy(flattened(this.values)) },
        flat_columns:      function () { return copy(flattened(transpose(this.values))) },

      }
    },
};