replace zigzag lines with colored lines (green->orange->red)
parent
9841ea5495
commit
b5fa6acd3b
|
@ -15,6 +15,11 @@
|
||||||
.link line {
|
.link line {
|
||||||
stroke: #333;
|
stroke: #333;
|
||||||
stroke-opacity: 1;
|
stroke-opacity: 1;
|
||||||
|
stroke-width: 1.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link:hover line {
|
||||||
|
stroke-width: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.node ellipse {
|
.node ellipse {
|
||||||
|
|
|
@ -199,21 +199,6 @@ force.on("tick", function() {
|
||||||
.attr("x2", function(d) { return d.target.x })
|
.attr("x2", function(d) { return d.target.x })
|
||||||
.attr("y2", function(d) { return d.target.y })
|
.attr("y2", function(d) { return d.target.y })
|
||||||
|
|
||||||
link.selectAll(".label")
|
|
||||||
.attr("transform", function(d) {
|
|
||||||
π = Math.PI
|
|
||||||
Δx = d.source.x - d.target.x
|
|
||||||
Δy = d.source.y - d.target.y
|
|
||||||
m = Δy/Δx
|
|
||||||
α = Math.atan(m)
|
|
||||||
α += Δx<0?π:0
|
|
||||||
sin = Math.sin(α)
|
|
||||||
cos = Math.cos(α)
|
|
||||||
x = (Math.min(d.source.x, d.target.x) + Math.abs(Δx) / 2)
|
|
||||||
y = (Math.min(d.source.y, d.target.y) + Math.abs(Δy) / 2)
|
|
||||||
return "matrix(" + [cos, sin, -sin, cos, x, y].join(",") + ")"
|
|
||||||
})
|
|
||||||
|
|
||||||
vis.selectAll(".node").attr("transform", function(d) {
|
vis.selectAll(".node").attr("transform", function(d) {
|
||||||
return "translate(" + d.x + "," + d.y + ")";
|
return "translate(" + d.x + "," + d.y + ")";
|
||||||
})
|
})
|
||||||
|
@ -291,6 +276,10 @@ function reload() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var linkcolor = d3.scale.linear()
|
||||||
|
.domain([1, 1.2, 2])
|
||||||
|
.range(["#0a3", "orange", "red"]);
|
||||||
|
|
||||||
function update() {
|
function update() {
|
||||||
var links = data.links
|
var links = data.links
|
||||||
.filter(function (d) {
|
.filter(function (d) {
|
||||||
|
@ -314,21 +303,17 @@ function update() {
|
||||||
|
|
||||||
linkEnter.append("line")
|
linkEnter.append("line")
|
||||||
|
|
||||||
link.selectAll("path.label")
|
link.selectAll("line")
|
||||||
.remove()
|
.filter( function (d) {
|
||||||
|
return d.type != 'client'
|
||||||
link.filter(function (d) {
|
})
|
||||||
return d.quality != "TT" && d.quality != "1.000"
|
.style("stroke", function(d) {
|
||||||
|
return linkcolor(d.quality)
|
||||||
|
})
|
||||||
|
.append("title")
|
||||||
|
.text( function (d) {
|
||||||
|
return d.quality
|
||||||
})
|
})
|
||||||
.append("path")
|
|
||||||
.attr("class", "label")
|
|
||||||
.attr("d", d3.svg.zigzag()
|
|
||||||
.amplitude(function (d) {
|
|
||||||
return Math.pow((1 - 1/d.quality), 0.5) * 8;
|
|
||||||
})
|
|
||||||
.len(30)
|
|
||||||
.angularFrequency(4)
|
|
||||||
)
|
|
||||||
|
|
||||||
link.exit().remove()
|
link.exit().remove()
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
<link href='force-light.css' rel='stylesheet' type='text/css' />
|
<link href='force-light.css' rel='stylesheet' type='text/css' />
|
||||||
<script type="text/javascript" src="jquery.min.js"></script>
|
<script type="text/javascript" src="jquery.min.js"></script>
|
||||||
<script type="text/javascript" src="d3.v2.js"></script>
|
<script type="text/javascript" src="d3.v2.js"></script>
|
||||||
<script type="text/javascript" src="zigzag.js"></script>
|
|
||||||
<script src="http://maps.google.com/maps/api/js?sensor=true"></script>
|
<script src="http://maps.google.com/maps/api/js?sensor=true"></script>
|
||||||
<script src="https://raw.github.com/HPNeo/gmaps/master/gmaps.js"></script>
|
<script src="https://raw.github.com/HPNeo/gmaps/master/gmaps.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
|
@ -1,57 +0,0 @@
|
||||||
function zigzag_amplitude(d) {
|
|
||||||
return d.amplitude;
|
|
||||||
}
|
|
||||||
|
|
||||||
function zigzag_len(d) {
|
|
||||||
return d.len;
|
|
||||||
}
|
|
||||||
|
|
||||||
function zigzag_angularFrequency(d) {
|
|
||||||
return d.angularFrequency;
|
|
||||||
}
|
|
||||||
|
|
||||||
d3.svg.zigzag = function() {
|
|
||||||
var amplitude = zigzag_amplitude,
|
|
||||||
len = zigzag_len,
|
|
||||||
angularFrequency = zigzag_angularFrequency;
|
|
||||||
|
|
||||||
function zigzag() {
|
|
||||||
var A = amplitude.apply(this, arguments),
|
|
||||||
l = len.apply(this, arguments),
|
|
||||||
ω = angularFrequency.apply(this, arguments) + 1;
|
|
||||||
|
|
||||||
start = -l/2;
|
|
||||||
end = l/2;
|
|
||||||
|
|
||||||
step = l/ω;
|
|
||||||
|
|
||||||
var s = "M" + start + ",0";
|
|
||||||
|
|
||||||
for (var i = 1; i<ω; i++)
|
|
||||||
s += "L" + (start + i*step) + "," + ((i%2)?A:-A);
|
|
||||||
|
|
||||||
s += "L" + end + ",0";
|
|
||||||
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
zigzag.amplitude = function(v) {
|
|
||||||
if (!arguments.length) return amplitude;
|
|
||||||
amplitude = d3.functor(v);
|
|
||||||
return zigzag;
|
|
||||||
};
|
|
||||||
|
|
||||||
zigzag.len = function(v) {
|
|
||||||
if (!arguments.length) return len;
|
|
||||||
len = d3.functor(v);
|
|
||||||
return zigzag;
|
|
||||||
};
|
|
||||||
|
|
||||||
zigzag.angularFrequency = function(v) {
|
|
||||||
if (!arguments.length) return angularFrequency;
|
|
||||||
angularFrequency = d3.functor(v);
|
|
||||||
return zigzag;
|
|
||||||
};
|
|
||||||
|
|
||||||
return zigzag;
|
|
||||||
};
|
|
Loading…
Reference in New Issue