syntagmatic/parallel-coordinates

Can't find yscale function while trying to specify a scale

shakedk opened this issue · 2 comments

Hi,

As mentioned in the API, the y-axis scale can be specified manually:
"
Dimension attributes include:
....
"yscale": Type of scale to use for the axis(log, linear, ordinal
...
"

I created a dimensions variable as follows:
var dimensions = {
"AreaID" : {
title : 'Area ID',
yscale: 'log'
},
};

Then I added it to the parcoords variable:

                        parcoords = d3.parcoords()("#parallelCoords").data(
                                data).hideAxis([ "name" ]).color(color)                                 .dimensions(dimensions).detectDimensions().render().alpha(0.7)
                                .render().shadows().reorderable()
                                .composite("darken").margin({
                                    top : 24,
                                    left : 150,
                                    bottom : 12,
                                    right : 0
                                }).mode("queue").render().brushMode(
                                        "1D-axes");

When I run the code, I get the following error:
Uncaught TypeError: __.dimensions[p.key].yscale is not a function (line 630 in d3.parcoords.js)

When I remove the yscale property, everything works ok and the title is changed as specified.

Any idea what am I might be doing wrong?

Thanks for this awesome tool,
Shaked.

Documentation is lacking... You need to define a d3 scale like in the axis-config example:

var range = parcoords.height() - parcoords.margin().top - parcoords.margin().bottom;
var min = d3.min(data, function(d) {
    return parseInt(d['displacement (cc)']);
});
var max = d3.max(data, function(d) {
    return parseInt(d['displacement (cc)']);
});
var log = d3.scale.log().domain([min, max]).range([range, 1]);

Thanks @mcwillso !