Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Allowing different color schemes
  • Loading branch information
mistercrunch committed Jan 27, 2016
1 parent 09c7724 commit 40b28d0
Show file tree
Hide file tree
Showing 6 changed files with 79 additions and 29 deletions.
18 changes: 18 additions & 0 deletions panoramix/forms.py
Expand Up @@ -110,6 +110,24 @@ def __init__(self, viz):
['stack', 'stream', 'expand']),
default='stack',
description=""),
'linear_color_scheme': SelectField(
'Color Scheme', choices=self.choicify([
'fire', 'blue_white_yellow', 'white_black',
'black_white']),
default='fire',
description=""),
'xscale_interval': SelectField(
'XScale Interval', choices=self.choicify(range(1, 50)),
default='1',
description=(
"Number of step to take between ticks when "
"printing the x scale")),
'yscale_interval': SelectField(
'YScale Interval', choices=self.choicify(range(1, 50)),
default='1',
description=(
"Number of step to take between ticks when "
"printing the y scale")),
'bar_stacked': BetterBooleanField(
'Stacked Bars',
default=False,
Expand Down
45 changes: 35 additions & 10 deletions panoramix/static/panoramix.js
@@ -1,23 +1,50 @@
var px = (function() {

var visualizations = {};
var dashboard = undefined;

var color = function(){
// Color related utility functions go in this object
var bnbColors = [
//rausch hackb kazan babu lima beach barol
'#ff5a5f', '#7b0051', '#007A87', '#00d1c1', '#8ce071', '#ffb400', '#b4a76c',
'#ff8083', '#cc0086', '#00a1b3', '#00ffeb', '#bbedab', '#ffd266', '#cbc29a',
'#ff3339', '#ff1ab1', '#005c66', '#00b3a5', '#55d12e', '#b37e00', '#988b4e',
];
function colorBnb() {
var spectrums = {
'fire': ['white', 'yellow', 'red', 'black'],
'blue_white_yellow': ['#00d1c1', 'white', '#ffb400'],
'white_black': ['white', 'black'],
'black_white': ['black', 'white'],
}
var colorBnb = function() {
// Color factory
var seen = {};
return function(s){
if(seen[s] === undefined)
seen[s] = Object.keys(seen).length;
return bnbColors[seen[s] % bnbColors.length];
return this.bnbColors[seen[s] % this.bnbColors.length];
};
};
colorScalerFactory = function (colors, data, accessor){
// Returns a linear scaler our of an array of color
if(!Array.isArray(colors))
colors = spectrums[colors];
var ext = d3.extent(data, accessor);
var points = [];
var chunkSize = (ext[1] - ext[0]) / colors.length;
$.each(colors, function(i, c){
points.push(i * chunkSize)
});
return d3.scale.linear().domain(points).range(colors);
}
return {
bnbColors: bnbColors,
category21: colorBnb(),
colorScalerFactory: colorScalerFactory,
}
};

var px = (function() {

var visualizations = {};
var dashboard = undefined;


function UTC(dttm){
return v = new Date(dttm.getUTCFullYear(), dttm.getUTCMonth(), dttm.getUTCDate(), dttm.getUTCHours(), dttm.getUTCMinutes(), dttm.getUTCSeconds());
Expand Down Expand Up @@ -488,8 +515,6 @@ var px = (function() {
initDashboardView: initDashboardView,
formatDate: formatDate,
timeFormatFactory: timeFormatFactory,
colorBnb: colorBnb,
bnbColors: bnbColors,
color: colorBnb(),
color: color(),
}
})();
19 changes: 8 additions & 11 deletions panoramix/static/widgets/viz_heatmap.js
Expand Up @@ -39,17 +39,8 @@ px.registerViz('heatmap', function(slice) {
var X = 0, Y = 1;
var heatmapDim = [xRbScale.domain().length, yRbScale.domain().length];

ext = d3.extent(data, function(d){return d.v;});
function colorScalerFactory(colors, data, accessor){
var ext = d3.extent(data, accessor);
var points = [];
var chunkSize = (ext[1] - ext[0]) / colors.length;
$.each(colors, function(i, c){
points.push(i * chunkSize)
});
return d3.scale.linear().domain(points).range(colors);
}
var color = colorScalerFactory(['white', 'yellow', 'red', 'black'], data, function(d){return d.v});
var color = px.color.colorScalerFactory(
fd.linear_color_scheme, data, function(d){return d.v});


var scale = [
Expand Down Expand Up @@ -111,12 +102,18 @@ px.registerViz('heatmap', function(slice) {
}
})
rect.call(tip);
var xscale_skip = 2;
var yscale_skip = 2;

xAxis = d3.svg.axis()
.scale(xRbScale)
.tickValues(xRbScale.domain().filter(
function(d, i) { return !(i % (parseInt(fd.xscale_interval))); }))
.orient("bottom");
yAxis = d3.svg.axis()
.scale(yRbScale)
.tickValues(yRbScale.domain().filter(
function(d, i) { return !(i % (parseInt(fd.yscale_interval))); }))
.orient("left");

svg.append("g")
Expand Down
2 changes: 1 addition & 1 deletion panoramix/static/widgets/viz_nvd3.js
Expand Up @@ -147,7 +147,7 @@ function viz_nvd3(slice) {
}

chart.color(function(d, i){
return px.color(d[colorKey]);
return px.color.category21(d[colorKey]);
});
d3.select(slice.selector).append("svg")
.datum(payload.data)
Expand Down
2 changes: 1 addition & 1 deletion panoramix/static/widgets/viz_wordcloud.js
Expand Up @@ -49,7 +49,7 @@ px.registerViz('word_cloud', function(slice) {
.enter().append("text")
.style("font-size", function(d) { return d.size + "px"; })
.style("font-family", "Impact")
.style("fill", function(d, i) {return px.color(d.text); })
.style("fill", function(d, i) {return px.color.category21(d.text); })
.attr("text-anchor", "middle")
.attr("transform", function(d) {
return "translate(" + [d.x, d.y] + ") rotate(" + d.rotate + ")";
Expand Down
22 changes: 16 additions & 6 deletions panoramix/viz.py
Expand Up @@ -1206,6 +1206,13 @@ class HeatmapViz(BaseViz):
'all_columns_y',
'metric',
)
},
{
'label': 'Heatmap Options',
'fields': (
'linear_color_scheme',
('xscale_interval', 'yscale_interval'),
)
},)
def query_obj(self):
d = super(HeatmapViz, self).query_obj()
Expand All @@ -1216,12 +1223,15 @@ def query_obj(self):

def get_json_data(self):
df = self.get_df()
df = df[[
self.form_data.get('all_columns_x'),
self.form_data.get('all_columns_y'),
self.form_data.get('metric')
]]
df.columns = ['x', 'y', 'v']
fd = self.form_data
x = fd.get('all_columns_x')
y = fd.get('all_columns_y')
v = fd.get('metric')
if x == y:
df.columns = ['x', 'y', 'v']
else:
df = df[[x, y, v]]
df.columns = ['x', 'y', 'v']
return df.to_json(orient="records")


Expand Down

0 comments on commit 40b28d0

Please sign in to comment.