parent
272ef37dfe
commit
3c669717e2
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@ |
|||||||
|
{"duration": 12.543240070343018, "input_args": {"XData": " sepal_l sepal_w petal_l petal_w\n0 6.3 3.3 6.0 2.5\n1 7.1 3.0 5.9 2.1\n2 5.8 2.7 5.1 1.9\n3 6.3 2.9 5.6 1.8\n4 7.6 3.0 6.6 2.1\n.. ... ... ... ...\n145 5.1 3.8 1.6 0.2\n146 5.0 3.5 1.6 0.6\n147 5.1 3.4 1.5 0.2\n148 4.6 3.2 1.4 0.2\n149 4.8 3.0 1.4 0.3\n\n[150 rows x 4 columns]", "yData": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]", "clf": "KNeighborsClassifier(algorithm='ball_tree', leaf_size=30, metric='minkowski',\n metric_params=None, n_jobs=None, n_neighbors=82, p=2,\n weights='uniform')", "params": "{'n_neighbors': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99], 'metric': ['chebyshev', 'manhattan', 'euclidean', 'minkowski'], 'algorithm': ['brute', 'kd_tree', 'ball_tree'], 'weights': ['uniform', 'distance']}", "eachAlgor": "'KNN'", "AlgorithmsIDsEnd": "0"}} |
Binary file not shown.
@ -0,0 +1 @@ |
|||||||
|
{"duration": 19.771310806274414, "input_args": {"XData": " sepal_l sepal_w petal_l petal_w\n0 6.3 3.3 6.0 2.5\n1 7.1 3.0 5.9 2.1\n2 5.8 2.7 5.1 1.9\n3 6.3 2.9 5.6 1.8\n4 7.6 3.0 6.6 2.1\n.. ... ... ... ...\n145 5.1 3.8 1.6 0.2\n146 5.0 3.5 1.6 0.6\n147 5.1 3.4 1.5 0.2\n148 4.6 3.2 1.4 0.2\n149 4.8 3.0 1.4 0.3\n\n[150 rows x 4 columns]", "yData": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]", "clf": "LogisticRegression(C=64, class_weight=None, dual=False, fit_intercept=True,\n intercept_scaling=1, l1_ratio=None, max_iter=300,\n multi_class='auto', n_jobs=None, penalty='none',\n random_state=42, solver='newton-cg', tol=0.0001, verbose=0,\n warm_start=False)", "params": "{'C': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99], 'max_iter': [50, 100, 150, 200, 250, 300, 350, 400, 450], 'solver': ['lbfgs', 'newton-cg', 'sag', 'saga'], 'penalty': ['l2', 'none']}", "eachAlgor": "'LR'", "AlgorithmsIDsEnd": "100"}} |
@ -0,0 +1,455 @@ |
|||||||
|
|
||||||
|
<template> |
||||||
|
<div> |
||||||
|
<div id="containerAllCM"></div> |
||||||
|
<div id="containerSelectionCM"></div> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import * as d3Base from 'd3' |
||||||
|
import { EventBus } from '../main.js' |
||||||
|
import $ from 'jquery' |
||||||
|
import * as colorbr from 'colorbrewer' |
||||||
|
|
||||||
|
// attach all d3 plugins to the d3 library |
||||||
|
const d3 = Object.assign(d3Base) |
||||||
|
const colorbrewer = Object.assign(colorbr) |
||||||
|
|
||||||
|
export default { |
||||||
|
name: "PredictionsCM", |
||||||
|
data () { |
||||||
|
return { |
||||||
|
GetResultsAll: [], |
||||||
|
GetResultsSelectionCM: [], |
||||||
|
responsiveWidthHeight: [], |
||||||
|
predictSelectionCM: [], |
||||||
|
StoreIndices: [], |
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
reset () { |
||||||
|
var svg = d3.select("#containerAllCM"); |
||||||
|
svg.selectAll("*").remove(); |
||||||
|
var svg = d3.select("#containerSelectionCM"); |
||||||
|
svg.selectAll("*").remove(); |
||||||
|
}, |
||||||
|
Grid () { |
||||||
|
|
||||||
|
Array.prototype.multiIndexOf = function (el) { |
||||||
|
var idxs = []; |
||||||
|
for (var i = this.length - 1; i >= 0; i--) { |
||||||
|
if (this[i] === el) { |
||||||
|
idxs.unshift(i); |
||||||
|
} |
||||||
|
} |
||||||
|
return idxs; |
||||||
|
}; |
||||||
|
|
||||||
|
var svg = d3.select("#containerAllCM"); |
||||||
|
svg.selectAll("*").remove(); |
||||||
|
|
||||||
|
var yValues = JSON.parse(this.GetResultsAllCM[6]) |
||||||
|
var targetNames = JSON.parse(this.GetResultsAllCM[7]) |
||||||
|
|
||||||
|
var getIndices = [] |
||||||
|
for (let i = 0; i < targetNames.length; i++) { |
||||||
|
getIndices.push(yValues.multiIndexOf(targetNames[i])) |
||||||
|
} |
||||||
|
getIndices.reverse() |
||||||
|
|
||||||
|
var predictions = JSON.parse(this.GetResultsAllCM[12]) |
||||||
|
var KNNPred = predictions[0] |
||||||
|
var LRPred = predictions[1] |
||||||
|
var PredAver = predictions[2] |
||||||
|
|
||||||
|
var dataAver = [] |
||||||
|
var dataAverGetResults = [] |
||||||
|
var dataKNN = [] |
||||||
|
var dataKNNResults = [] |
||||||
|
var dataLR = [] |
||||||
|
var dataLRResults = [] |
||||||
|
|
||||||
|
var max = 0 |
||||||
|
for (let i = 0; i < targetNames.length; i++) { |
||||||
|
if (getIndices[targetNames[i]].length > max) { |
||||||
|
max = getIndices[targetNames[i]].length |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
var sqrtSize = Math.ceil(Math.sqrt(max)) |
||||||
|
var size = sqrtSize * sqrtSize |
||||||
|
|
||||||
|
for (let i = 0; i < targetNames.length; i++) { |
||||||
|
dataAver = []; |
||||||
|
dataKNN = [] |
||||||
|
dataLR = [] |
||||||
|
getIndices[targetNames[i]].forEach(element => { |
||||||
|
dataAver.push({ id: element, value: PredAver[element][targetNames[i]] }) |
||||||
|
dataKNN.push({ id: element, value: KNNPred[element][targetNames[i]] }) |
||||||
|
dataLR.push({ id: element, value: LRPred[element][targetNames[i]] }) |
||||||
|
}); |
||||||
|
for (let j = 0; j < size - getIndices[targetNames[i]].length; j++) { |
||||||
|
dataAver.push({ id: null, value: 1.0 }) |
||||||
|
dataKNN.push({ id: null, value: 1.0 }) |
||||||
|
dataLR.push({ id: null, value: 1.0 }) |
||||||
|
} |
||||||
|
dataAverGetResults.push(dataAver) |
||||||
|
dataKNNResults.push(dataKNN) |
||||||
|
dataLRResults.push(dataLR) |
||||||
|
} |
||||||
|
dataAverGetResults.reverse() |
||||||
|
dataKNNResults.reverse() |
||||||
|
dataLRResults.reverse() |
||||||
|
|
||||||
|
var classArray = [] |
||||||
|
this.StoreIndices = [] |
||||||
|
for (let i = 0; i < dataAverGetResults.length; i++) { |
||||||
|
dataAverGetResults[i].sort((a, b) => (a.value > b.value) ? 1 : -1) |
||||||
|
var len = dataAverGetResults[i].length |
||||||
|
var indices = new Array(len) |
||||||
|
for (let j = 0; j < len; j++) { |
||||||
|
indices[j] = dataAverGetResults[i][j].id; |
||||||
|
} |
||||||
|
this.StoreIndices.push(indices) |
||||||
|
|
||||||
|
dataKNNResults[i].sort(function(a, b){ |
||||||
|
return indices.indexOf(a.id) - indices.indexOf(b.id) |
||||||
|
}); |
||||||
|
|
||||||
|
dataLRResults[i].sort(function(a, b){ |
||||||
|
return indices.indexOf(a.id) - indices.indexOf(b.id) |
||||||
|
}); |
||||||
|
|
||||||
|
classArray.push(dataAverGetResults[i].concat(dataKNNResults[i], dataLRResults[i])); |
||||||
|
} |
||||||
|
|
||||||
|
var classStore = [].concat.apply([], classArray); |
||||||
|
|
||||||
|
// === Set up canvas === // |
||||||
|
|
||||||
|
var width = 1200, |
||||||
|
height = 125; |
||||||
|
var colourScale; |
||||||
|
|
||||||
|
|
||||||
|
var canvas = d3.select('#containerAllCM') |
||||||
|
.append('canvas') |
||||||
|
.attr('width', width) |
||||||
|
.attr('height', height); |
||||||
|
|
||||||
|
var context = canvas.node().getContext('2d'); |
||||||
|
|
||||||
|
// === Bind data to custom elements === // |
||||||
|
|
||||||
|
var customBase = document.createElement('custom'); |
||||||
|
var custom = d3.select(customBase); // this is our svg replacement |
||||||
|
|
||||||
|
// settings for a grid with 40 cells in a row and 2x5 cells in a group |
||||||
|
var groupSpacing = 60; |
||||||
|
var cellSpacing = 2; |
||||||
|
var cellSize = Math.floor((width - 1 * groupSpacing) / (10 * sqrtSize)) - cellSpacing; |
||||||
|
|
||||||
|
// === First call === // |
||||||
|
databind(classStore, size, sqrtSize); // ...then update the databind function |
||||||
|
|
||||||
|
var t = d3.timer(function(elapsed) { |
||||||
|
draw(); |
||||||
|
if (elapsed > 300) t.stop(); |
||||||
|
}); // start a timer that runs the draw function for 500 ms (this needs to be higher than the transition in the databind function) |
||||||
|
|
||||||
|
|
||||||
|
// === Bind and draw functions === // |
||||||
|
|
||||||
|
function databind(data, size, sqrtSize) { |
||||||
|
|
||||||
|
|
||||||
|
colourScale = d3.scaleSequential(d3.interpolateReds).domain([1, 0]) |
||||||
|
|
||||||
|
var join = custom.selectAll('custom.rect') |
||||||
|
.data(data); |
||||||
|
|
||||||
|
var enterSel = join.enter() |
||||||
|
.append('custom') |
||||||
|
.attr('class', 'rect') |
||||||
|
.attr('x', function(d, i) { |
||||||
|
var x0 = Math.floor(i / size) % sqrtSize, x1 = Math.floor(i % sqrtSize); |
||||||
|
return groupSpacing * x0 + (cellSpacing + cellSize) * (x1 + x0 * 10); |
||||||
|
}) |
||||||
|
.attr('y', function(d, i) { |
||||||
|
var y0 = Math.floor(i / data.length), y1 = Math.floor(i % size / sqrtSize); |
||||||
|
return groupSpacing * y0 + (cellSpacing + cellSize) * (y1 + y0 * 10); |
||||||
|
}) |
||||||
|
.attr('width', 0) |
||||||
|
.attr('height', 0); |
||||||
|
|
||||||
|
join |
||||||
|
.merge(enterSel) |
||||||
|
.transition() |
||||||
|
.attr('width', cellSize) |
||||||
|
.attr('height', cellSize) |
||||||
|
.attr('fillStyle', function(d) { return colourScale(d.value); }) |
||||||
|
|
||||||
|
var exitSel = join.exit() |
||||||
|
.transition() |
||||||
|
.attr('width', 0) |
||||||
|
.attr('height', 0) |
||||||
|
.remove(); |
||||||
|
|
||||||
|
} // databind() |
||||||
|
|
||||||
|
|
||||||
|
// === Draw canvas === // |
||||||
|
|
||||||
|
function draw() { |
||||||
|
|
||||||
|
// clear canvas |
||||||
|
|
||||||
|
context.fillStyle = '#fff'; |
||||||
|
context.fillRect(0, 0, width, height); |
||||||
|
|
||||||
|
|
||||||
|
// draw each individual custom element with their properties |
||||||
|
|
||||||
|
var elements = custom.selectAll('custom.rect') // this is the same as the join variable, but used here to draw |
||||||
|
|
||||||
|
elements.each(function(d,i) { |
||||||
|
|
||||||
|
// for each virtual/custom element... |
||||||
|
|
||||||
|
var node = d3.select(this); |
||||||
|
context.fillStyle = node.attr('fillStyle'); |
||||||
|
context.fillRect(node.attr('x'), node.attr('y'), node.attr('width'), node.attr('height')) |
||||||
|
|
||||||
|
}); |
||||||
|
|
||||||
|
} // draw() |
||||||
|
|
||||||
|
}, |
||||||
|
GridSelection () { |
||||||
|
|
||||||
|
Array.prototype.multiIndexOf = function (el) { |
||||||
|
var idxs = []; |
||||||
|
for (var i = this.length - 1; i >= 0; i--) { |
||||||
|
if (this[i] === el) { |
||||||
|
idxs.unshift(i); |
||||||
|
} |
||||||
|
} |
||||||
|
return idxs; |
||||||
|
}; |
||||||
|
|
||||||
|
var svg = d3.select("#containerSelectionCM"); |
||||||
|
svg.selectAll("*").remove(); |
||||||
|
|
||||||
|
var predictionsAll = JSON.parse(this.GetResultsSelectionCM[12]) |
||||||
|
|
||||||
|
if (this.predictSelectionCM.length != 0) { |
||||||
|
var predictions = this.predictSelectionCM |
||||||
|
var KNNPred = predictions[0] |
||||||
|
var LRPred = predictions[1] |
||||||
|
var PredAver = predictions[2] |
||||||
|
} else { |
||||||
|
var KNNPred = predictionsAll[0] |
||||||
|
var LRPred = predictionsAll[1] |
||||||
|
var PredAver = predictionsAll[2] |
||||||
|
} |
||||||
|
var KNNPredAll = predictionsAll[0] |
||||||
|
var LRPredAll = predictionsAll[1] |
||||||
|
var PredAverAll = predictionsAll[2] |
||||||
|
|
||||||
|
var yValues = JSON.parse(this.GetResultsSelectionCM[6]) |
||||||
|
var targetNames = JSON.parse(this.GetResultsSelectionCM[7]) |
||||||
|
|
||||||
|
var getIndices = [] |
||||||
|
for (let i = 0; i < targetNames.length; i++) { |
||||||
|
getIndices.push(yValues.multiIndexOf(targetNames[i])) |
||||||
|
} |
||||||
|
getIndices.reverse() |
||||||
|
|
||||||
|
var dataAver = [] |
||||||
|
var dataAverGetResults = [] |
||||||
|
var dataKNN = [] |
||||||
|
var dataKNNResults = [] |
||||||
|
var dataLR = [] |
||||||
|
var dataLRResults = [] |
||||||
|
|
||||||
|
var max = 0 |
||||||
|
for (let i = 0; i < targetNames.length; i++) { |
||||||
|
if (getIndices[targetNames[i]].length > max) { |
||||||
|
max = getIndices[targetNames[i]].length |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
var sqrtSize = Math.ceil(Math.sqrt(max)) |
||||||
|
var size = sqrtSize * sqrtSize |
||||||
|
|
||||||
|
for (let i = 0; i < targetNames.length; i++) { |
||||||
|
dataAver = []; |
||||||
|
dataKNN = [] |
||||||
|
dataLR = [] |
||||||
|
getIndices[targetNames[i]].forEach(element => { |
||||||
|
dataAver.push({ id: element, value: PredAver[element][targetNames[i]] - PredAverAll[element][targetNames[i]] }) |
||||||
|
dataKNN.push({ id: element, value: KNNPred[element][targetNames[i]] - KNNPredAll[element][targetNames[i]] }) |
||||||
|
dataLR.push({ id: element, value: LRPred[element][targetNames[i]] - LRPredAll[element][targetNames[i]] }) |
||||||
|
}); |
||||||
|
for (let j = 0; j < size - getIndices[targetNames[i]].length; j++) { |
||||||
|
dataAver.push({ id: null, value: 0 }) |
||||||
|
dataKNN.push({ id: null, value: 0 }) |
||||||
|
dataLR.push({ id: null, value: 0 }) |
||||||
|
} |
||||||
|
dataAverGetResults.push(dataAver) |
||||||
|
dataKNNResults.push(dataKNN) |
||||||
|
dataLRResults.push(dataLR) |
||||||
|
} |
||||||
|
dataAverGetResults.reverse() |
||||||
|
dataKNNResults.reverse() |
||||||
|
dataLRResults.reverse() |
||||||
|
|
||||||
|
var classArray = [] |
||||||
|
|
||||||
|
for (let i = 0; i < dataAverGetResults.length; i++) { |
||||||
|
|
||||||
|
var indices = this.StoreIndices[i] |
||||||
|
dataAverGetResults[i].sort(function(a, b){ |
||||||
|
return indices.indexOf(a.id) - indices.indexOf(b.id) |
||||||
|
}); |
||||||
|
|
||||||
|
dataKNNResults[i].sort(function(a, b){ |
||||||
|
return indices.indexOf(a.id) - indices.indexOf(b.id) |
||||||
|
}); |
||||||
|
|
||||||
|
dataLRResults[i].sort(function(a, b){ |
||||||
|
return indices.indexOf(a.id) - indices.indexOf(b.id) |
||||||
|
}); |
||||||
|
|
||||||
|
classArray.push(dataAverGetResults[i].concat(dataKNNResults[i], dataLRResults[i])); |
||||||
|
} |
||||||
|
|
||||||
|
var classStore = [].concat.apply([], classArray); |
||||||
|
// === Set up canvas === // |
||||||
|
|
||||||
|
var width = 1200, |
||||||
|
height = 125; |
||||||
|
var colourScale; |
||||||
|
|
||||||
|
|
||||||
|
var canvas = d3.select('#containerSelectionCM') |
||||||
|
.append('canvas') |
||||||
|
.attr('width', width) |
||||||
|
.attr('height', height); |
||||||
|
|
||||||
|
var context = canvas.node().getContext('2d'); |
||||||
|
|
||||||
|
// === Bind data to custom elements === // |
||||||
|
|
||||||
|
var customBase = document.createElement('custom'); |
||||||
|
var custom = d3.select(customBase); // this is our svg replacement |
||||||
|
|
||||||
|
// settings for a grid with 40 cells in a row and 2x5 cells in a group |
||||||
|
var groupSpacing = 60; |
||||||
|
var cellSpacing = 2; |
||||||
|
var cellSize = Math.floor((width - 1 * groupSpacing) / (10 * sqrtSize)) - cellSpacing; |
||||||
|
|
||||||
|
// === First call === // |
||||||
|
databind(classStore, size, sqrtSize); // ...then update the databind function |
||||||
|
|
||||||
|
var t = d3.timer(function(elapsed) { |
||||||
|
draw(); |
||||||
|
if (elapsed > 300) t.stop(); |
||||||
|
}); // start a timer that runs the draw function for 500 ms (this needs to be higher than the transition in the databind function) |
||||||
|
|
||||||
|
|
||||||
|
// === Bind and draw functions === // |
||||||
|
|
||||||
|
function databind(data, size, sqrtSize) { |
||||||
|
|
||||||
|
|
||||||
|
colourScale = d3.scaleSequential(d3.interpolatePRGn).domain([-1, 1]) |
||||||
|
|
||||||
|
var join = custom.selectAll('custom.rect') |
||||||
|
.data(data); |
||||||
|
|
||||||
|
var enterSel = join.enter() |
||||||
|
.append('custom') |
||||||
|
.attr('class', 'rect') |
||||||
|
.attr('x', function(d, i) { |
||||||
|
var x0 = Math.floor(i / size) % sqrtSize, x1 = Math.floor(i % sqrtSize); |
||||||
|
return groupSpacing * x0 + (cellSpacing + cellSize) * (x1 + x0 * 10); |
||||||
|
}) |
||||||
|
.attr('y', function(d, i) { |
||||||
|
var y0 = Math.floor(i / data.length), y1 = Math.floor(i % size / sqrtSize); |
||||||
|
return groupSpacing * y0 + (cellSpacing + cellSize) * (y1 + y0 * 10); |
||||||
|
}) |
||||||
|
.attr('width', 0) |
||||||
|
.attr('height', 0); |
||||||
|
|
||||||
|
join |
||||||
|
.merge(enterSel) |
||||||
|
.transition() |
||||||
|
.attr('width', cellSize) |
||||||
|
.attr('height', cellSize) |
||||||
|
.attr('fillStyle', function(d) { return colourScale(d.value); }) |
||||||
|
|
||||||
|
var exitSel = join.exit() |
||||||
|
.transition() |
||||||
|
.attr('width', 0) |
||||||
|
.attr('height', 0) |
||||||
|
.remove(); |
||||||
|
|
||||||
|
} // databind() |
||||||
|
|
||||||
|
|
||||||
|
// === Draw canvas === // |
||||||
|
|
||||||
|
function draw() { |
||||||
|
|
||||||
|
// clear canvas |
||||||
|
|
||||||
|
context.fillStyle = '#fff'; |
||||||
|
context.fillRect(0, 0, width, height); |
||||||
|
|
||||||
|
|
||||||
|
// draw each individual custom element with their properties |
||||||
|
|
||||||
|
var elements = custom.selectAll('custom.rect') // this is the same as the join variable, but used here to draw |
||||||
|
|
||||||
|
elements.each(function(d,i) { |
||||||
|
|
||||||
|
// for each virtual/custom element... |
||||||
|
|
||||||
|
var node = d3.select(this); |
||||||
|
context.fillStyle = node.attr('fillStyle'); |
||||||
|
context.fillRect(node.attr('x'), node.attr('y'), node.attr('width'), node.attr('height')) |
||||||
|
|
||||||
|
}); |
||||||
|
|
||||||
|
} // draw() |
||||||
|
|
||||||
|
}, |
||||||
|
}, |
||||||
|
mounted () { |
||||||
|
EventBus.$on('emittedEventCallingGridCrossoverMutation', data => { this.GetResultsAllCM = data; }) |
||||||
|
EventBus.$on('emittedEventCallingGridCrossoverMutation', this.Grid) |
||||||
|
|
||||||
|
EventBus.$on('emittedEventCallingGridSelectionGridCrossoverMutation', data => { this.GetResultsSelectionCM = data; }) |
||||||
|
EventBus.$on('emittedEventCallingGridSelectionGridCrossoverMutation', this.GridSelection) |
||||||
|
|
||||||
|
EventBus.$on('SendSelectedPointsToServerEventCM', data => { this.predictSelectionCM = data; }) |
||||||
|
EventBus.$on('SendSelectedPointsToServerEventCM', this.GridSelection) |
||||||
|
|
||||||
|
EventBus.$on('Responsive', data => { |
||||||
|
this.responsiveWidthHeight = data}) |
||||||
|
EventBus.$on('ResponsiveandChange', data => { |
||||||
|
this.responsiveWidthHeight = data}) |
||||||
|
|
||||||
|
// reset the views |
||||||
|
EventBus.$on('resetViews', this.reset) |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style type="text/css"> |
||||||
|
canvas { |
||||||
|
border: 1px dotted #ccc; |
||||||
|
} |
||||||
|
</style> |
Loading…
Reference in new issue