d3" Stacked Small Multiples"图例

时间:2014-04-01 18:04:40

标签: javascript d3.js

我跟随http://bl.ocks.org/mbostock/9490516中的d3示例并进行了一些调整

         

body {
  font: 10px sans-serif;
  margin: 0;
}

.line {
  fill: none;
  stroke: #666;
  stroke-width: 1.5px;
}

.area {
  fill: #e7e7e7;
}

</style>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>

var margin = {top: 8, right: 10, bottom: 2, left: 10},
    width = 960 - margin.left - margin.right,
    height = 69 - margin.top - margin.bottom;

var parseDate = d3.time.format("%d-%b-%Y").parse;

var x = d3.time.scale()
    .range([0, width]);

d3.tsv("data.tsv", type, function(error, data) {

var stack = d3.layout.stack()
    .offset("wiggle")
    .values(function(d) { 
        return d.values; 
    });

    var symbols = d3.nest()
      .key(function(d) { return d.symbol; })
      .entries(data);

    x.domain([
        d3.min(symbols, function(symbol) { return symbol.values[0].date; }),
        d3.max(symbols, function(symbol) { return symbol.values[symbol.values.length - 1].date; })
    ]);

  var svg = d3.select("body").selectAll("svg")
      .data(stack(symbols))
    .enter().append("svg")
      .attr("width", width + margin.left + margin.right)
      .attr("height", height + margin.top + margin.bottom)
    .append("g")
      .attr("transform", "translate(" + margin.left + "," + margin.top + ")")
      .each(function(symbol) {
        symbol.y = d3.scale.linear()
            .domain([0, d3.max(symbol.values, function(d) { return d.count; })])
            .range([height, 0]);
      });

  svg.append("path")
      .attr("class", "area")
      .attr("d", function(symbol) {
        return d3.svg.area()
            .x(function(d) { return x(d.date); })
            .y1(function(d) { return symbol.y(d.count); })
            .y0(height)
            (symbol.values);
      });

  svg.append("path")
      .attr("class", "line")
      .attr("d", function(symbol) {
        return d3.svg.line()
            .x(function(d) { return x(d.date); })
            .y(function(d) { return symbol.y(d.count); })
            (symbol.values);
      });

  svg.append("text")
      .attr("x", width - 6)
      .attr("y", height - 6)
      .style("text-anchor", "end")
      .text(function(symbol) { return symbol.key; });
});

function type(d) {
  d.count = +d.count;
  d.date = parseDate(d.date);
  return d;
}

</script>

带数据

date    from    symbol  count
04-Mar-2014 NULL    Jokowi  41
05-Mar-2014 NULL    Jokowi  42
06-Mar-2014 NULL    Jokowi  24
10-Mar-2014 NULL    Jokowi  30
11-Mar-2014 NULL    Jokowi  15
12-Mar-2014 NULL    Jokowi  22
13-Mar-2014 NULL    Jokowi  65
14-Mar-2014 NULL    Jokowi  8
16-Mar-2014 NULL    Jokowi  50
17-Mar-2014 NULL    Jokowi  41
18-Mar-2014 NULL    Jokowi  61
19-Mar-2014 NULL    Jokowi  1

结果将像

enter image description here

当我添加更多数据(from

date    from    symbol  count
04-Mar-2014 NULL    Jokowi  41
05-Mar-2014 NULL    Jokowi  42
06-Mar-2014 NULL    Jokowi  24
10-Mar-2014 NULL    Jokowi  30
11-Mar-2014 NULL    Jokowi  15
12-Mar-2014 NULL    Jokowi  22
13-Mar-2014 NULL    Jokowi  65
14-Mar-2014 NULL    Jokowi  8
16-Mar-2014 NULL    Jokowi  50
17-Mar-2014 NULL    Jokowi  41
18-Mar-2014 NULL    Jokowi  61
19-Mar-2014 NULL    Jokowi  1
11-Mar-2014 news.detik.com  Jokowi  7
12-Mar-2014 news.detik.com  Jokowi  17
13-Mar-2014 news.detik.com  Jokowi  16
14-Mar-2014 news.detik.com  Jokowi  7
16-Mar-2014 news.detik.com  Jokowi  27
17-Mar-2014 news.detik.com  Jokowi  17
18-Mar-2014 news.detik.com  Jokowi  31
19-Mar-2014 news.detik.com  Jokowi  3
20-Mar-2014 news.detik.com  Jokowi  2
21-Mar-2014 news.detik.com  Jokowi  30
24-Mar-2014 news.detik.com  Jokowi  19
25-Mar-2014 news.detik.com  Jokowi  53
26-Mar-2014 news.detik.com  Jokowi  26
27-Mar-2014 news.detik.com  Jokowi  36
28-Mar-2014 news.detik.com  Jokowi  48
29-Mar-2014 news.detik.com  Jokowi  72
30-Mar-2014 news.detik.com  Jokowi  41
31-Mar-2014 news.detik.com  Jokowi  59
11-Mar-2014 kompas.com  Jokowi  6
12-Mar-2014 kompas.com  Jokowi  5
17-Mar-2014 kompas.com  Jokowi  16
18-Mar-2014 kompas.com  Jokowi  13
19-Mar-2014 kompas.com  Jokowi  8
20-Mar-2014 kompas.com  Jokowi  11
21-Mar-2014 kompas.com  Jokowi  10
24-Mar-2014 kompas.com  Jokowi  12
25-Mar-2014 kompas.com  Jokowi  9
26-Mar-2014 kompas.com  Jokowi  22
27-Mar-2014 kompas.com  Jokowi  13
28-Mar-2014 kompas.com  Jokowi  37
29-Mar-2014 kompas.com  Jokowi  25
30-Mar-2014 kompas.com  Jokowi  17
31-Mar-2014 kompas.com  Jokowi  25

以下将是

enter image description here

问题:我怎么能将它们堆叠到下面的图片中,而不是像上面那样有更多from数据?我如何使用堆栈d3 layout()?

enter image description here

让我们说kompas.com例如red和news.detik,例如blue是另一个堆栈

0 个答案:

没有答案