Midpoint marker

http://stackoverflow.com/questions/15729856/display-an-arrow-head-in-the-middle-of-a-link-with-d3-js

by aybalasubramanian

CSS

path.link {
    fill: none;
    stroke: #666;
    stroke-width: 1.5px;
}
path.marker_only {
    fill: none;
    stroke: red;
    stroke-opacity: .5;
    stroke-width: 1.5px;
}
marker#licensing {
    fill: green;
}
path.link.licensing {
    stroke: green;
}
path.link.resolved {
    stroke-dasharray: 0, 2 1;
}
circle {
    fill: #ccc;
    stroke: #333;
    stroke-width: 1.5px;
}
text {
    font: 10px sans-serif;
    pointer-events: none;
}
text.shadow {
    stroke: #fff;
    stroke-width: 3px;
    stroke-opacity: .8;
}

JavaScript

var links = [{
    source: "Microsoft",
    target: "Amazon",
    type: "licensing"
}, {
    source: "Microsoft",
    target: "HTC",
    type: "licensing"
}, {
    source: "Samsung",
    target: "Apple",
    type: "suit"
}, {
    source: "Motorola",
    target: "Apple",
    type: "suit"
}, {
    source: "Nokia",
    target: "Apple",
    type: "resolved"
}, {
    source: "HTC",
    target: "Apple",
    type: "suit"
}, {
    source: "Kodak",
    target: "Apple",
    type: "suit"
}, {
    source: "Microsoft",
    target: "Barnes & Noble",
    type: "suit"
}, {
    source: "Microsoft",
    target: "Foxconn",
    type: "suit"
}, {
    source: "Oracle",
    target: "Google",
    type: "suit"
}, {
    source: "Apple",
    target: "HTC",
    type: "suit"
}, {
    source: "Microsoft",
    target: "Inventec",
    type: "suit"
}, {
    source: "Samsung",
    target: "Kodak",
    type: "resolved"
}, {
    source: "LG",
    target: "Kodak",
    type: "resolved"
}, {
    source: "RIM",
    target: "Kodak",
    type: "suit"
}, {
    source: "Sony",
    target: "LG",
    type: "suit"
}, {
    source: "Kodak",
    target: "LG",
    type: "resolved"
}, {
    source: "Apple",
    target: "Nokia",
    type: "resolved"
}, {
    source: "Qualcomm",
    target: "Nokia",
    type: "resolved"
}, {
    source: "Apple",
    target: "Motorola",
    type: "suit"
}, {
    source: "Microsoft",
    target: "Motorola",
    type: "suit"
}, {
    source: "Motorola",
    target: "Microsoft",
    type: "suit"
}, {
    source: "Huawei",
    target: "ZTE",
    type: "suit"
}, {
    source: "Ericsson",
    target: "ZTE",
    type: "suit"
}, {
    source: "Kodak",
    target: "Samsung",
    type: "resolved"
}, {
    source: "Apple",
    target: "Samsung",
    type: "suit"
}, {
    source: "Kodak",
    target: "RIM",
    type: "suit"
}, {
    source: "Nokia",
    target: "Qualcomm",
    type: "suit"
}];

var nodes = {};

// Compute the distinct nodes from the links.
links.forEach(function (link) {
   ...