Skip to content

Commit

Permalink
Improving the parallel coordinate viz (#452)
Browse files Browse the repository at this point in the history
* Improving the parallel coordinate viz

* Clear container on refresh
* Order of columns is kept
* Option to show/hide the series column in viz
* Color metric not shown by default

* JS linting
  • Loading branch information
mistercrunch committed May 10, 2016
1 parent c4e3020 commit d79089c
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 5 deletions.
19 changes: 17 additions & 2 deletions caravel/assets/visualizations/parallel_coordinates.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,20 @@ function parallelCoordVis(slice) {
function refresh() {
$('#code').attr('rows', '15');
$.getJSON(slice.jsonEndpoint(), function (payload) {
var data = payload.data;
var fd = payload.form_data;
var data = payload.data;

var cols = fd.metrics;
if (fd.include_series) {
cols = [fd.series].concat(fd.metrics);
}

var ttypes = {};
ttypes[fd.series] = 'string';
fd.metrics.forEach(function (v) {
ttypes[v] = 'number';
});

var ext = d3.extent(data, function (d) {
return d[fd.secondary_metric];
});
Expand All @@ -27,6 +39,7 @@ function parallelCoordVis(slice) {
return cScale(d[fd.secondary_metric]);
};
var container = d3.select(slice.selector);
container.selectAll('*').remove();
var eff_height = fd.show_datatable ? (slice.height() / 2) : slice.height();

container.append('div')
Expand All @@ -40,7 +53,9 @@ function parallelCoordVis(slice) {
.alpha(0.5)
.composite("darken")
.height(eff_height)
.data(payload.data)
.data(data)
.dimensions(cols)
.types(ttypes)
.render()
.createAxes()
.shadows()
Expand Down
4 changes: 4 additions & 0 deletions caravel/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,10 @@ def __init__(self, viz):
'Stacked Bars',
default=False,
description=""),
'include_series': BetterBooleanField(
'Include Series',
default=False,
description="Include series name as an axis"),
'secondary_metric': SelectField(
'Color Metric', choices=datasource.metrics_combo,
default=default_metric,
Expand Down
6 changes: 3 additions & 3 deletions caravel/viz.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from __future__ import print_function
from __future__ import unicode_literals

import copy
import hashlib
import json
import logging
Expand Down Expand Up @@ -1461,14 +1462,14 @@ class ParallelCoordinatesViz(BaseViz):
'metrics',
'secondary_metric',
'limit',
('show_datatable', None),
('show_datatable', 'include_series'),
)
},)

def query_obj(self):
d = super(ParallelCoordinatesViz, self).query_obj()
fd = self.form_data
d['metrics'] = fd.get('metrics')
d['metrics'] = copy.copy(fd.get('metrics'))
second = fd.get('secondary_metric')
if second not in d['metrics']:
d['metrics'] += [second]
Expand All @@ -1477,7 +1478,6 @@ def query_obj(self):

def get_data(self):
df = self.get_df()
df = df[[self.form_data.get('series')] + self.form_data.get('metrics')]
return df.to_dict(orient="records")


Expand Down

0 comments on commit d79089c

Please sign in to comment.