Built with blockbuilder.org
forked from Raj-Joshi-dev's block: Cartesian Graph
license: mit |
Built with blockbuilder.org
forked from Raj-Joshi-dev's block: Cartesian Graph
<!DOCTYPE html> | |
<html> | |
<head> | |
<script data-require="[email protected]" data-semver="3.5.17" | |
src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.js"></script> | |
<style> | |
body { | |
font: 15px Arial; | |
} | |
path { | |
stroke: steelblue; | |
stroke-width: 2; | |
} | |
.axis path, | |
.axis line { | |
fill: none; | |
stroke: grey; | |
stroke-width: 1; | |
shape-rendering: crispEdges; | |
} | |
</style> | |
</head> | |
<body> | |
<div align="center"> | |
<div id="graph"></div> | |
</div> | |
<script> | |
// graph dimensions | |
var width = 750, | |
height = 750, | |
padding = 70; | |
// svg container | |
var vis = d3.select("#graph") | |
.append("svg:svg") | |
.attr("width", width) | |
.attr("height", height); | |
var xScale = d3.scale.linear().domain([1, -1]).range([width - padding, padding]); | |
var yScale = d3.scale.linear().domain([-1, 1]).range([height - padding, padding]); | |
// y axis | |
var yAxis = d3.svg.axis() | |
.orient("left") | |
.tickValues([]) | |
.scale(yScale); | |
// x axis | |
var xAxis = d3.svg.axis() | |
.orient("bottom") | |
.tickValues([]) | |
.scale(xScale); | |
var xAxisPlot = vis.append("g") | |
.attr("class", "axis axis--x") | |
.attr("transform", "translate(0," + (height / 2) + ")") | |
.call(xAxis) //.tickSize(-height, 0)); | |
var yAxisPlot = vis.append("g") | |
.attr("class", "axis axis--y") | |
.attr("transform", "translate(" + (width / 2) + ",0)") | |
.call(yAxis) //.tickSize(-width, 0)); | |
var data = [ | |
{ | |
x: -0.75, | |
y: 0.25 | |
}, { | |
x: 0.50, | |
y: -0.50 | |
}, { | |
x: 0.50, | |
y: 0.50 | |
} ,{ | |
x: -0.50, | |
y: -0.50 | |
} | |
]; | |
vis.selectAll(".xaxis text") // select all the text elements for the xaxis | |
.attr("transform", function (d) { | |
return "translate(" + this.getBBox().height * -2 + "," + this.getBBox().height + ")rotate(-45)"; | |
}); | |
vis.append("text") | |
.attr("text-anchor", "midde") | |
.attr("transform", "translate(30,370)") | |
.text("Geminsnn"); | |
vis.append("text") | |
.attr("text-anchor", "midde") | |
.attr("transform", "translate(345,700)") | |
.text("Flexibilität"); | |
vis.append("text") | |
.attr("text-anchor", "midde") | |
.attr("transform", "translate(345,60)") | |
.text("Stabilität"); | |
vis.append("text") | |
.attr("text-anchor", "midde") | |
.attr("transform", "translate(650,370)") | |
.text("Selbswichlung"); | |
vis.selectAll(".point") | |
.data(data) | |
.enter().append("circle") | |
.attr("class", "point") | |
.attr("r", 5) | |
.style("fill", "steelblue") | |
.attr("cx", function (d) { | |
return xScale(d.x); | |
}) | |
.attr("cy", function (d) { | |
return yScale(d.y); | |
}); | |
vis.append('path') | |
.datum(data) | |
.attr('fill', 'red') | |
.attr('stroke', '#69b3a2') | |
.attr('stroke-width', 1.5) | |
.attr('d', d => d3.svg.line() | |
.x(d => xScale(d.x)) | |
.y(d => yScale(d.y))(d) + 'Z') | |
</script> | |
</body> | |
</html> |