<commit_before>var d3 = require('d3');

var inherits = require('inherits');

var margin = {
    top: 20,
    right: 20,
    bottom: 20,
    left: 45
};


var ScatterPlot = function(selector, data, images, opts) {

    if(!opts) {
        opts = {};
    }

    var width = (opts.width || $(selector).width()) - margin.left - margin.right;
    var height = (opts.height || (width * 0.6)) - margin.top - margin.bottom;

    var self = this;

    if (data.hasOwnProperty('colors')) {
        fillcolors = data.colors.map(function(d) {return d3.rgb(d.r, d.g, d.b)})
        strokecolors = fillcolors.map(function(d) {return d.darker(0.5)})
    } else {
        fillcolors = []
        strokecolors = []
    }

    if (data.hasOwnProperty('points')) {
        data = data.points
    }

    var xDomain = d3.extent(data, function(d) {
            return d.x;
        });

    var yDomain = d3.extent(data, function(d) {
            return d.y;
        });

    var x = d3.scale.linear()
        .domain([xDomain[0] - 1, xDomain[1] + 1])
        .range([0, width]);

    var y = d3.scale.linear()
        .domain([yDomain[0] - 1, yDomain[1] + 1])
        .range([height, 0]);


    var zoom = d3.behavior.zoom()
        .x(x)
        .y(y)
        .on('zoom', zoomed);

    var svg = d3.select(selector)
        .append('svg')
        .attr('class', 'scatter-plot')
        .attr('width', width + margin.left + margin.right)
        .attr('height', height + margin.top + margin.bottom)
        .append('svg:g')
        .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')
        .call(zoom);

    svg.append('rect')
        .attr('width', width)
        .attr('height', height)
        .attr('class', 'plot');


    var makeXAxis = function () {
        return d3.svg.axis()
            .scale(x)
            .orient('bottom')
            .ticks(5);
    };

    var makeYAxis = function () {
        return d3.svg.axis()
            .scale(y)
            .orient('left')
            .ticks(5);
    };

    var xAxis = d3.svg.axis()
        .scale(x)
        .orient('bottom')
        .ticks(5);

    svg.append('g')
        .attr('class', 'x axis')
        .attr('transform', 'translate(0, ' + height + ')')
        .call(xAxis);

    var yAxis = d3.svg.axis()
        .scale(y)
        .orient('left')
        .ticks(5);

    svg.append('g')
        .attr('class', 'y axis')
        .call(yAxis);

    svg.append('g')
        .attr('class', 'x grid')
        .attr('transform', 'translate(0,' + height + ')')
        .call(makeXAxis()
                .tickSize(-height, 0, 0)
                .tickFormat(''));

    svg.append('g')
        .attr('class', 'y grid')
        .call(makeYAxis()
                .tickSize(-width, 0, 0)
                .tickFormat(''));

    // var clip = svg.append('svg:clipPath')
    //     .attr('id', 'clip')
    //     .append('svg:rect')
    //     .attr('x', 0)
    //     .attr('y', 0)
    //     .attr('width', width)
    //     .attr('height', height);

    // var chartBody = svg.append('g')
    //     .attr('clip-path', 'url(#clip)');

    // // chartBody.append('svg:path')
    // //     .datum(data)
    // //     .attr('class', 'line')
    // //     .attr('d', line);

    // draw dots
    svg.selectAll('.dot')
        .data(data)
        .enter().append('circle')
        //.attr('class', 'dot')
        .attr('r', 6)
        .attr('fill',function(d, i) { return (fillcolors[i] || '#deebfa');})
        .attr('stroke',function(d, i) { return (strokecolors[i] || '#68a1e5');})<commit_msg>Change color handling<commit_after>var d3 = require('d3');

var inherits = require('inherits');
var utils = require('lightning-client-utils');

var margin = {
    top: 20,
    right: 20,
    bottom: 20,
    left: 45
};


var ScatterPlot = function(selector, data, images, opts) {

    if(!opts) {
        opts = {};
    }

    var width = (opts.width || $(selector).width()) - margin.left - margin.right;
    var height = (opts.height || (width * 0.6)) - margin.top - margin.bottom;

    var self = this;

    if (data.hasOwnProperty('points')) {
        points = data.points

        if (data.hasOwnProperty('labels')) {
            var mn = d3.min(data.labels, function(d) {
                return d.k;
            });
            var mx = d3.max(data.labels, function(d) {
                return d.k;
            });
            var n = mx - mn + 1
            console.log(n)
            var colors = utils.getColors(n);
            points.map(function(d, i) {
                rgb = d3.rgb(colors[data.labels[i].k - mn])
                d.r = rgb.r
                d.g = rgb.g
                d.b = rgb.b
                return d})
        } else if (data.hasOwnProperty('colors')) {
            points.map(function(d, i) {
                d.r = data.colors[i].r
                d.g = data.colors[i].g
                d.b = data.colors[i].b
            })
        } else {
            points.map(function(d) {
                rgb = d3.rgb('#deebfa')
                d.r = rgb.r
                d.g = rgb.g
                d.b = rgb.b
            })
        }

    } else {

        points = data
        points.map(function(d) {
                rgb = d3.rgb('#deebfa')
                d.r = rgb.r
                d.g = rgb.g
                d.b = rgb.b
            })
    
    }

    var xDomain = d3.extent(points, function(d) {
            return d.x;
        });

    var yDomain = d3.extent(points, function(d) {
            return d.y;
        });

    var x = d3.scale.linear()
        .domain([xDomain[0] - 1, xDomain[1] + 1])
        .range([0, width]);

    var y = d3.scale.linear()
        .domain([yDomain[0] - 1, yDomain[1] + 1])
        .range([height, 0]);


    var zoom = d3.behavior.zoom()
        .x(x)
        .y(y)
        .on('zoom', zoomed);

    var svg = d3.select(selector)
        .append('svg')
        .attr('class', 'scatter-plot')
        .attr('width', width + margin.left + margin.right)
        .attr('height', height + margin.top + margin.bottom)
        .append('svg:g')
        .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')
        .call(zoom);

    svg.append('rect')
        .attr('width', width)
        .attr('height', height)
        .attr('class', 'plot');


    var makeXAxis = function () {
        return d3.svg.axis()
            .scale(x)
            .orient('bottom')
            .ticks(5);
    };

    var makeYAxis = function () {
        return d3.svg.axis()
            .scale(y)
            .orient('left')
            .ticks(5);
    };

    var xAxis = d3.svg.axis()
        .scale(x)
        .orient('bottom')
        .ticks(5);

    svg.append('g')
        .attr('class', 'x axis')
        .attr('transform', 'translate(0, ' + height + ')')
        .call(xAxis);

    var yAxis = d3.svg.axis()
        .scale(y)
        .orient('left')
        .ticks(5);

    svg.append('g')
        .attr('class', 'y axis')
        .call(yAxis);

    svg.append('g')
        .attr('class', 'x grid')
        .attr('transform', 'translate(0,' + height + ')')
        .call(makeXAxis()
                .tickSize(-height, 0, 0)
                .tickFormat(''));

    svg.append('g')
        .attr('class', 'y grid')
        .call(makeYAxis()
                .tickSize(-width, 0, 0)
                .tickFormat(''));

    // var clip = svg.append('svg:clipPath')
    //     .attr('id', 'clip')
    //     .append('svg:rect')
    //     .attr('x', 0)
    //     .attr('y', 0)
    //     .attr('width', width)
    //     .attr('height', height);

    // var chartBody = svg.append('g')
    //     .attr('clip-path', 'url(#clip)');

    // // chartBody.append('svg:path')
    // //     .datum(data)
    // //     .attr('class', 'line')
    // //     .attr('d', line);

    // draw dots
    svg.selectAll('.dot')
        .data(points)
        .enter().append('circle')
        //.attr('class', 'dot')
        .attr('r', 6)
        .attr('fill',function(d) { return (d3.rgb(d.r, d.g, d.b));})
        .attr('stroke',function(d) { return (d3.rgb(d.r, d.g, d.b).darker(0.5));})
{'fraction_non_alphanumeric': 0.1937399480390944, 'fraction_numerical': 0.013237659284918966, 'mean_word_length': 1.5325814536340852, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4468181', 'n_tokens_mistral': 2858, 'n_tokens_neox': 2707, 'n_words': 516}