parent
e3a4a400b3
commit
08932bb911
Binary file not shown.
@ -0,0 +1 @@ |
||||
{"duration": 18.56320309638977, "input_args": {"XData": " Fbs Slope Trestbps Exang Thalach Age Chol Sex Oldpeak Restecg Cp Ca Thal\n0 1 0 145 0 150 63 233 1 2.3 0 3 0 1\n1 0 0 130 0 187 37 250 1 3.5 1 2 0 2\n2 0 2 130 0 172 41 204 0 1.4 0 1 0 2\n3 0 2 120 0 178 56 236 1 0.8 1 1 0 2\n4 0 2 120 1 163 57 354 0 0.6 1 0 0 2\n.. ... ... ... ... ... ... ... ... ... ... .. .. ...\n298 0 1 140 1 123 57 241 0 0.2 1 0 0 3\n299 0 1 110 0 132 45 264 1 1.2 1 3 0 3\n300 1 1 144 0 141 68 193 1 3.4 1 0 2 3\n301 0 1 130 1 115 57 131 1 1.2 1 0 1 3\n302 0 1 130 0 174 57 236 0 0.0 0 1 1 2\n\n[303 rows x 13 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, 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, 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, 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, 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, 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]", "clf": "KNeighborsClassifier(algorithm='brute', metric='euclidean', n_neighbors=96)", "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": "400"}} |
@ -0,0 +1,361 @@ |
||||
<template> |
||||
<div id="SankeyInter" style="min-height: 363px;"></div> |
||||
</template> |
||||
|
||||
<script> |
||||
import * as Plotly from 'plotly.js' |
||||
import { EventBus } from '../main.js' |
||||
import { sankey as d3Sankey } from 'd3-sankey' |
||||
import { format as d3Format } from 'd3-format' |
||||
import * as d3Base from 'd3' |
||||
import $ from 'jquery' |
||||
|
||||
// attach all d3 plugins to the d3 library |
||||
const d3v5 = Object.assign(d3Base) |
||||
|
||||
export default { |
||||
name: 'History', |
||||
data () { |
||||
return { |
||||
WH: [], |
||||
RandomSearLoc : 100 |
||||
} |
||||
}, |
||||
methods: { |
||||
reset () { |
||||
var svg = d3.select("#SankeyInter"); |
||||
svg.selectAll("*").remove(); |
||||
}, |
||||
SankeyView () { |
||||
var units = "Models"; |
||||
var initialModels = this.RandomSearLoc * 5 |
||||
var months = [{month:"RandSear",value:initialModels,loss:null}, |
||||
{month:"Crossover",value:250,loss:null}, |
||||
{month:"Mutate",value:250,loss:null}]; |
||||
//this is the svg canvas attributes: (not buidlign abything just seeting up varaibels) |
||||
var margin = {top: 40, right: 40, bottom: 40, left: 100}, //comma is the equivalent of var : |
||||
width = 1200 - margin.left - margin.right, |
||||
height = 350 - margin.top - margin.bottom; |
||||
|
||||
var svg = d3.select("#SankeyInter"); |
||||
svg.selectAll("*").remove(); |
||||
|
||||
var formatNumber = d3Format(",.0f"), // zero decimal places |
||||
format = function(d) { return formatNumber(d) + " " + units; } |
||||
var color = d3.scale.category20b() |
||||
|
||||
var startingAxis = this.RandomSearLoc * 6 |
||||
var axisScale = d3.scale.linear() |
||||
.domain([startingAxis,0]) |
||||
.range([0, height]); |
||||
|
||||
//Create the Axis |
||||
var yAxis = d3.svg.axis() |
||||
.scale(axisScale) |
||||
.orient("left") |
||||
.ticks(10); |
||||
|
||||
// var lossScale = d3.scale.linear() |
||||
// .domain([.95,1,1.05]) |
||||
// .range(["red","black","green"]); |
||||
|
||||
// append the svg canvas to the page |
||||
var svg = d3.select("#SankeyInter").append("svg") //will select the id of cahrt from index.html ln:135 --> # looks for the id= from html |
||||
.attr("width", width + margin.left + margin.right) |
||||
.attr("height", height + margin.top + margin.bottom) |
||||
.append("g") //group everything on the vancas together. will edit down on ln38 below |
||||
.attr("transform", |
||||
"translate(" + margin.left + "," + margin.top + ") scale(1,-1) translate(" + 0 + "," + -height + ")"); |
||||
|
||||
// Set the sankey diagram properties |
||||
var sankey = d3Sankey() //calling the function |
||||
.nodeWidth(25) |
||||
.nodePadding(0) |
||||
.size([width, height]); |
||||
|
||||
var path = sankey.link(); //sankey.link() is something happening in sankey.js |
||||
|
||||
// svg.selectAll("text.values") |
||||
// .data(months) |
||||
// .enter() |
||||
// .append("text") |
||||
// .text(function(d){return formatNumber(d.value)}) |
||||
// .attr("class", "innerText") |
||||
// .attr("x",function(d,i){return i*89-margin.left-5}) |
||||
// .attr("y",20) |
||||
// .attr("transform", function(d){ |
||||
// return "translate(" + margin.left + "," + margin.top + ") scale(1,-1) translate(" + 0 + "," + -(d.value/10+15) + ")";}); |
||||
|
||||
// svg.selectAll("text.loss") |
||||
// .data(months) |
||||
// .enter() |
||||
// .append("text") |
||||
// .text(function(d){return d.loss}) |
||||
// .attr("class", "innerText") |
||||
// .attr("x",function(d,i){return i*89-margin.left-5}) |
||||
// .attr("y",20) |
||||
// .attr("fill",function(d){ return lossScale(d.loss)}) |
||||
// .attr("transform", function(d){ |
||||
// return "translate(" + margin.left + "," + margin.top + ") scale(1,-1) translate(" + 0 + "," + -(d.value/10-5) + ")";}); |
||||
|
||||
// svg.selectAll("text.months") |
||||
// .data(months) |
||||
// .enter() |
||||
// .append("text") |
||||
// .attr("class", "innerText") |
||||
// .text(function(d){return d.month}) |
||||
// .attr("x",function(d,i){return i*89-margin.left-10}) |
||||
// .attr("y",20) |
||||
// .attr("transform", |
||||
// "translate(" + margin.left + "," + margin.top + ") scale(1,-1) translate(" + 0 + "," + margin.bottom + ")"); |
||||
|
||||
// load the data |
||||
var graph = { |
||||
"nodes":[ |
||||
{"name":"GradB","node":0,"month":"RandSear","color":"#e41a1c"}, |
||||
{"name":"RF","node":1,"month":"RandSear","color":"#377eb8"}, |
||||
{"name":"MLP","node":2,"month":"RandSear","color":"#4daf4a"}, |
||||
{"name":"LR","node":3,"month":"RandSear","color":"#984ea3"}, |
||||
{"name":"KNN","node":4,"month":"RandSear","color":"#ff7f00"}, |
||||
{"name":"Random search","node":5,"month":"RandSear","color":"#ffffff"}, |
||||
{"name":"GradB","node":6,"month":"Crossover","color":"#e41a1c"}, |
||||
{"name":"RF","node":7,"month":"Crossover","color":"#377eb8"}, |
||||
{"name":"MLP","node":8,"month":"Crossover","color":"#4daf4a"}, |
||||
{"name":"LR","node":9,"month":"Crossover","color":"#984ea3"}, |
||||
{"name":"KNN","node":10,"month":"Crossover","color":"#ff7f00"}, |
||||
{"name":"Mutate","node":11,"month":"Crossover","color":"#ffffff"}, |
||||
{"name":"GradB","node":12,"month":"Mutate","color":"#e41a1c"}, |
||||
{"name":"RF","node":13,"month":"Mutate","color":"#377eb8"}, |
||||
{"name":"MLP","node":14,"month":"Mutate","color":"#4daf4a"}, |
||||
{"name":"LR","node":15,"month":"Mutate","color":"#984ea3"}, |
||||
{"name":"KNN","node":16,"month":"Mutate","color":"#ff7f00"}, |
||||
{"name":"Crossover","node":17,"month":"Crossover","color":"#ffffff"}, |
||||
], |
||||
|
||||
"links":[ |
||||
{"source":5,"target":11,"value":50}, |
||||
{"source":5,"target":17,"value":50}, |
||||
{"source":0,"target":6,"value":50}, |
||||
{"source":0,"target":12,"value":50}, |
||||
{"source":1,"target":7,"value":50}, |
||||
{"source":1,"target":13,"value":50}, |
||||
{"source":2,"target":8,"value":50}, |
||||
{"source":2,"target":14,"value":50}, |
||||
{"source":3,"target":9,"value":50}, |
||||
{"source":3,"target":15,"value":50}, |
||||
{"source":4,"target":10,"value":50}, |
||||
{"source":4,"target":16,"value":50}, |
||||
]} |
||||
|
||||
sankey.nodes(graph.nodes) |
||||
.links(graph.links) |
||||
.layout(0); |
||||
|
||||
// add in the links |
||||
var link = svg.append("g").selectAll(".link") |
||||
.data(graph.links) |
||||
.enter().append("path") |
||||
.attr("class", "link") |
||||
.attr("d", path) //d??? look it up later |
||||
.style("stroke",function(d){ |
||||
if(d.source.node == 5){ |
||||
return "transparent"; |
||||
}}) |
||||
.style("stroke-width", function(d) { return Math.max(.5, d.dy); }) //setting the stroke length by the data . d.dy is defined in sankey.js |
||||
.sort(function(a, b) { return b.dy - a.dy; }) |
||||
.on("mouseover",linkmouseover) |
||||
.on("mouseout",linkmouseout); |
||||
|
||||
// add the link titles |
||||
link.append("svg:title") //this is the mouseover stuff title is an svg element you can use "svg:title" or just "title" |
||||
.text(function(d) { |
||||
return format(d.value); }); |
||||
|
||||
// add in the nodes (creating the groups of the rectanlges) |
||||
var node = svg.append("g").selectAll(".node") |
||||
.data(graph.nodes) |
||||
.enter().append("g") |
||||
.attr("class", "node") |
||||
.attr("transform", function(d) { |
||||
return "translate(" + d.x + "," + d.y + ")"; |
||||
}); |
||||
//.call(d3.behavior.drag() <---------- THIS IS THE DRAG THING TO REMOVE!! |
||||
//.origin(function(d) { return d; }) |
||||
// .on("dragstart", function() { //<-------- THIS IS MOUSEOVER DRAG CAPABILITIES .on(mousemove) called pointer events, look it up! |
||||
// this.parentNode.appendChild(this); }) |
||||
// .on("drag", dragmove); |
||||
|
||||
// add the rectangles for the nodes |
||||
node.append("rect") |
||||
.attr("height", function(d) {return d.dy; }) |
||||
.attr("width", sankey.nodeWidth( )) |
||||
.style("fill", function(d) { return d.color; }) //matches name with the colors here! inside the replace is some sort of regex |
||||
// .style("stroke",function(d) { return d3.rgb(d.color).darker(1); }) //line around the box formatting |
||||
// .style("stroke-width",.5) |
||||
.on("mouseover", nodemouseover) |
||||
.on("mouseout", nodemouseout); |
||||
|
||||
node.append("foreignObject") |
||||
.attr("x", 28) |
||||
.attr("y", -21) |
||||
.attr("height", 18) |
||||
.attr("width", 40) |
||||
.attr("transform", "scale(1,-1)") |
||||
.append("xhtml:body") |
||||
.html(function(d) { |
||||
if (d.node > 5 && d.node != 11 && d.node != 17) { |
||||
return '<input id='+d.node+' type="text" value="50" />' |
||||
} |
||||
}); |
||||
// .append("title") |
||||
// .text(function(d) { |
||||
// return d.name + "\n" + format(d.value); }); |
||||
|
||||
// add in the title for the nodes |
||||
node.append("text") |
||||
.attr("x", -6) |
||||
.attr("y", function(d) { |
||||
console.log(d) |
||||
if (d.node <= 5) { |
||||
return d.dy - 70; |
||||
} else { |
||||
return d.dy - 35; |
||||
} |
||||
}) |
||||
.attr("dy", ".35em") |
||||
.attr("text-anchor", "end") |
||||
.attr("transform", "scale(1,-1)") |
||||
.text(function(d) { return d.name.replace(/-.*/, ""); }) |
||||
.style("font-weight", function(d) { |
||||
if (d.node == 5 || d.node == 11 || d.node == 17) { |
||||
return "bold"; |
||||
} |
||||
}) |
||||
.filter(function(d) { return d.x < width / 2; })//positioning left or right of node |
||||
.attr("x", 6 + sankey.nodeWidth()) |
||||
.attr("text-anchor", "start"); |
||||
|
||||
// // the function for moving the nodes |
||||
// function dragmove(d) { |
||||
// d3.select(this).attr("transform", |
||||
// "translate(" + d.x + "," + ( |
||||
// d.y = Math.max(0, Math.min(height/2 - d.dy, d3.event.y)) |
||||
// ) + ")"); |
||||
// sankey.relayout(); |
||||
// link.attr("d", path); |
||||
// } |
||||
|
||||
|
||||
var status=null; |
||||
function nodemouseover(d){ |
||||
|
||||
d3.selectAll(".link") |
||||
.attr("id", function(i){ |
||||
if (i.source.node == d.node || i.target.node == d.node){ |
||||
status="clicked"; |
||||
} else { |
||||
status=null; |
||||
} |
||||
return status; |
||||
}); |
||||
} |
||||
|
||||
function nodemouseout(d){ |
||||
d3.selectAll(".link") |
||||
.attr("id", "unclicked"); |
||||
} |
||||
function linkmouseover(d){ |
||||
d3.select(this) |
||||
.attr("stroke-opacity",.5); |
||||
} |
||||
function linkmouseout(d){ |
||||
d3.select(this) |
||||
.attr("stroke-opacity",.05); |
||||
} |
||||
|
||||
//select all of our links and set a new stroke color on the conditioan that the value is =.01. |
||||
d3.selectAll(".link") |
||||
.style("stroke-opacity", function(d){ |
||||
if(d.value == 0.01) return 0; |
||||
}); |
||||
|
||||
//y axis |
||||
svg.append("g") |
||||
.call(yAxis) |
||||
.attr("class", "axis") |
||||
.attr("transform", |
||||
"translate(" + -45 + "," + 0 + ") scale(1,-1) translate(" + 0 + "," + -(height) + ")"); |
||||
|
||||
} |
||||
}, |
||||
mounted() { |
||||
EventBus.$on('SendtheChangeinRangePos', data => { this.RandomSearLoc = data }) |
||||
|
||||
EventBus.$on('emittedEventCallingSankey', this.SankeyView) |
||||
|
||||
EventBus.$on('Responsive', data => { |
||||
this.WH = data}) |
||||
EventBus.$on('ResponsiveandChange', data => { |
||||
this.WH = data}) |
||||
|
||||
// reset the views |
||||
EventBus.$on('resetViews', this.reset) |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
|
||||
.input { |
||||
width: 35px !important; |
||||
height: 18px !important; |
||||
} |
||||
|
||||
.node text { |
||||
pointer-events: none; |
||||
text-shadow: 0 1px 0 #fff; |
||||
} |
||||
|
||||
.link { |
||||
fill: none; |
||||
stroke: #000; |
||||
stroke-opacity: .05; |
||||
} |
||||
|
||||
.link:hover { |
||||
stroke-opacity: .5; |
||||
} |
||||
|
||||
.node text { |
||||
pointer-events: none; |
||||
text-shadow: 0 1px 0 #fff; |
||||
} |
||||
|
||||
.link { |
||||
fill: none; |
||||
stroke: #000; |
||||
stroke-opacity: .05; |
||||
} |
||||
|
||||
.link:hover { |
||||
stroke-opacity: .5; |
||||
} |
||||
|
||||
#clicked { |
||||
stroke-opacity: .5 !important; |
||||
} |
||||
/* #unclicked { |
||||
stroke-opacity: .05; |
||||
}*/ |
||||
.axis path, |
||||
.axis line { |
||||
fill: none; |
||||
stroke: black; |
||||
shape-rendering: crispEdges; |
||||
margin-left:60px; |
||||
} |
||||
.axis text { |
||||
font-family: sans-serif; |
||||
font-size: 11px; |
||||
} |
||||
</style> |
Loading…
Reference in new issue