havenRegionData = {
let margin = {
top:60,
right: 40,
bottom: 60,
left: 70
}
let regiononeAgentData = regionHavenData[selectedregionone]
let regiontwoAgentData = regionHavenData[selectedregiontwo]
let agentDiff = []
let len = 0;
for (let i = 0; i < agentNames.length; i++)
{
let present = false;
let oneval = 0;
let twoval = 0;
if (regiononeAgentData.find(a => a.Agent === agentNames[i]) !== undefined)
{
oneval = regiononeAgentData.find(a => a.Agent === agentNames[i]).Percentage
present = true;
}
else
{
oneval = 0
}
if (regiontwoAgentData.find(a => a.Agent === agentNames[i]) !== undefined)
{
twoval = regiontwoAgentData.find(a => a.Agent === agentNames[i]).Percentage
present = true;
}
else
{
twoval = 0
}
console.log(agentNames[i])
console.log(present)
if (present)
{
agentDiff[agentNames[i]] = oneval-twoval
console.log(agentDiff[agentNames[i]])
len++
}
}
let svg = d3.create('svg').style("background-color", 'white').attr("preserveAspectRatio", "none")
.attr("viewBox", "0 0 963 560")
svg.append("text")
.attr("class", "signature")
.attr("text-anchor", "middle")
.attr("y", 10)
.attr("x", 963/2)
.attr("dy", ".75em")
.attr('style', "font-size: 24px; font-family: 'Bebas Neue';")
.text("Author: Sam Rosenberg");
svg.append('rect')
.attr("x", 0)
.attr("width", 963)
.attr("height", 560)
.attr("fill", "transparent")
.attr("stroke", "black")
.attr("stroke-width", 2);
svg.append("image")
.attr("xlink:href", "https://static.wikia.nocookie.net/valorant/images/7/70/Loading_Screen_Haven.png/revision/latest/scale-to-width-down/700?cb=20200620202335")
.attr("x", -15)
.attr("y", -15)
.attr("width", 1000)
.attr("height", 585).style("opacity", 0.3);
svg.append("image")
.attr("xlink:href", "https://runitback.gg/static/media/logo.dcfad9c9.png")
.attr("x", 0)
.attr("y", 0)
.attr("width", 200)
.attr("height", 35);
var text = svg.append("svg:text").attr("class", "title")
.attr("text-anchor", "middle")
.attr("y", 74)
.attr("x", 963/2)
.attr("dy", ".75em")
.attr('style', "font-size: "+50+"px; font-family: 'Bebas Neue';");
;
text.append("svg:tspan").style("fill", "black").attr("dy", "0em").text("Agent Pick Rate on Haven - Masters 1");
let scaleHeight = d3.scaleLinear()
.domain([-100, 100])
.range([-190,190])
let yAxis = d3.scaleLinear()
.domain([-100, 100])
.range([90,470])
len--
//make this make up and down bars
for (let i = 0; i < len+1; i++)
{
svg.append('rect')
.attr("x", i * ((963-margin.left-margin.right)/(len+1))+margin.left)
.attr("y", function(d) {
if (scaleHeight(agentDiff[Object.keys(agentDiff)[i]]) > 0)
{
return yAxis(0);
}
else
{
return yAxis(0) - Math.abs(scaleHeight(agentDiff[Object.keys(agentDiff)[i]]))
}})
.attr("width", ((963-margin.left-margin.right)/(len+1)))
.attr("height", function(d) {return Math.abs(scaleHeight(agentDiff[Object.keys(agentDiff)[i]]))})
.attr("fill", function(d) {
if (scaleHeight(agentDiff[Object.keys(agentDiff)[i]]) > 0)
{
return '#f14853';
}
else
{
return '#404b65';
}})
.attr("stroke", "black")
.attr("stroke-width", 2)
//region one boxes
svg.append('rect')
.attr("x", i * ((963-margin.left-margin.right)/(len+1))+margin.left)
.attr("y", function(d) {
if (regiononeAgentData.find(a => a.Agent === Object.keys(agentDiff)[i]) !== undefined)
{
return yAxis(0);
}
else
{
return 0;
}
})
.attr("width", ((963-margin.left-margin.right)/(len+1)))
.attr("height", function(d) {
if (regiononeAgentData.find(a => a.Agent === Object.keys(agentDiff)[i]) !== undefined)
{
console.log(Object.keys(agentDiff)[i] + " : " + Math.abs(scaleHeight(regiononeAgentData.find(a => a.Agent === Object.keys(agentDiff)[i]).Percentage)))
return Math.abs(scaleHeight(regiononeAgentData.find(a => a.Agent === Object.keys(agentDiff)[i]).Percentage))
}
else
{
return 0
}})
.attr("fill", function(d) {
if (regiononeAgentData.find(a => a.Agent === Object.keys(agentDiff)[i]) !== undefined)
{
if (scaleHeight(regiononeAgentData.find(a => a.Agent === Object.keys(agentDiff)[i]).Percentage) > 0)
{
return '#f14853';
}
else
{
return '#404b65';
}}
else { return 'black';}
})
.attr("stroke", "black")
.attr("stroke-width", 2).style("opacity", 0.35);
//region two boxes
svg.append('rect')
.attr("x", i * ((963-margin.left-margin.right)/(len+1))+margin.left)
.attr("y", function(d) {
if (regiontwoAgentData.find(a => a.Agent === Object.keys(agentDiff)[i]) !== undefined)
{
return yAxis(0) - Math.abs(scaleHeight(regiontwoAgentData.find(a => a.Agent === Object.keys(agentDiff)[i]).Percentage));
}
else
{
return 0;
}
})
.attr("width", ((963-margin.left-margin.right)/(len+1)))
.attr("height", function(d) {
if (regiontwoAgentData.find(a => a.Agent === Object.keys(agentDiff)[i]) !== undefined)
{
return Math.abs(scaleHeight(regiontwoAgentData.find(a => a.Agent === Object.keys(agentDiff)[i]).Percentage))
}
else
{
return 0
}})
.attr("fill", function(d) {
if (regiontwoAgentData.find(a => a.Agent === Object.keys(agentDiff)[i]) !== undefined)
{
return '#404b65';
}
else { return 'black';}
})
.attr("stroke", "black")
.attr("stroke-width", 2).style("opacity", 0.35);
svg.append("image")
.attr("xlink:href", agents.data.find(a => a.displayName === Object.keys(agentDiff)[i]).displayIcon)
.attr("x", i * ((963-margin.left-margin.right)/(len+1))+margin.left)
.attr("y", 560 - ((963-margin.left-margin.right)/(len+1)))
.attr("width", ((963-margin.left-margin.right)/(len+1)))
.attr("height", ((963-margin.left-margin.right)/(len+1)));
}
let times = [0, 0.5, 1.5, 3];
svg.append('g')
.attr('transform', `translate(${margin.left}, 0)`)
.call(d3.axisLeft(yAxis).ticks(8).tickFormat(function(x){return Math.abs(x)+"%";})).call(addWebFont, 'Bebas Neue', 'https://fonts.gstatic.com/s/bebasneue/v2/JTUSjIg69CK48gW7PXoo9WlhyyTh89Y.woff2')
.attr('style', "font-size: "+20+"px; font-family: 'Bebas Neue';");
svg.append("text")
.attr("class", "y axis")
.attr("text-anchor", "middle")
.attr("y", 6)
.attr("x", -(560)/2)
.attr("dy", ".75em")
.attr("transform", "rotate(-90)")
.text("Pick Rate of Agent").attr('style', "font-size: 30px; font-family: 'Bebas Neue';");;
let keyX = 830;
let multiplier = 2.5;
//key
svg.append('rect')
.attr("x", keyX-33).attr("y", 6)
.attr("width", 165)
.attr("height", 30*multiplier)
.attr("fill", "white")
.attr("stroke", "black")
.attr("stroke-width", 3).style("opacity", .5);
svg.append('text')
.attr('x', keyX+28)
.attr('y', 11 * multiplier)
.text("< First region pick rate")
.attr('fill', 'black')
.attr("text-anchor", "left")
.attr('style', "font-size: 12px; font-family: 'Bebas Neue';");
svg.append('text')
.attr('x', keyX+28)
.attr('y', 27*multiplier)
.text("< Second region pick rate")
.attr('fill', 'black')
.attr("text-anchor", "left")
.attr('style', "font-size: 12px; font-family: 'Bebas Neue';");
svg.append('text')
.attr('x', keyX+28)
.attr('y', 19*multiplier)
.text("< Difference in pick rate")
.attr('fill', 'black')
.attr("text-anchor", "left")
.attr('style', "font-size: 12px; font-family: 'Bebas Neue';");
svg.append('text')
.attr('x', keyX-30)
.attr('y', 21.5*multiplier)
.text("0 pickrate–")
.attr('fill', 'black')
.attr("text-anchor", "left")
.attr('style', "font-size: 12px; font-family: 'Bebas Neue';");
svg.append('rect')
.attr("x", keyX+17)
.attr("y", function(d) {
return (20 - 5)*multiplier;
})
.attr("width", 10)
.attr("height", 5*multiplier)
.attr("fill",'#404b65')
.attr("stroke", "black")
.attr("stroke-width", 1)
svg.append('rect')
.attr("x", keyX+17)
.attr("y", 5*multiplier)
.attr("width", 10)
.attr("height", 15*multiplier)
.attr("fill", '#404b65')
.attr("stroke", "black")
.attr("stroke-width", 1).style("opacity", 0.35);
svg.append('rect')
.attr("x", keyX+17)
.attr("y", 20*multiplier)
.attr("width", 10)
.attr("height", 10*multiplier)
.attr("fill", '#f14853')
.attr("stroke", "black")
.attr("stroke-width", 1).style("opacity", 0.35);
return svg.node();
}