如何在D3中将条形图转换为线形图?

我在这里找到了一个用D3.JS制作的精美烛台:
https://bl.ocks.org/anilnairxyz/raw/a51393d7c51342abe8d4e3f4cbab7ae1/
软件包的模块在这里:
https://gist.github.com/anilnairxyz/a51393d7c51342abe8d4e3f4cbab7ae1

出于我的目的,我想将下部的条形图更改为折线图。因此,我在main.js中的两个现有函数下面添加了一个函数:

function displayCS() {
    var chart       = cschart().Bheight(460);
    d3.select("#chart1").call(chart);
    var chart       = barchart().mname("volume").margin(320).MValue("TURNOVER");
    d3.select("#chart1").datum(genData).call(chart);
    var chart       = linechart().mname("comshort").margin(400).MValue("LINE");
    d3.select("#chart1").datum(genData).call(chart);

我还在脚本中添加了一个csline.js。到目前为止,我只更改了该软件包现有csbars.js中的几行。这是新的csline.js:

function linechart() {

  var margin = {top: 400,right: 30,bottom: 10,left: 5 },width = 1000,height = 60,mname = "mline1";

  var MValue = "LInes";

  function linerender(selection) {
    selection.each(function(data) {

      var x = d3.scale.ordinal()
          .rangeBands([0,width]);

      var y = d3.scale.linear()
          .rangeRound([height,0]);

      var xAxis = d3.svg.axis()
          .scale(x)
          .tickFormat(d3.time.format(TFormat[TIntervals[TPeriod]]));

      var yAxis = d3.svg.axis()
          .scale(y)
          .ticks(Math.floor(height/50));

      var svg = d3.select(this).select("svg")
         .append("g")
            .attr("transform","translate(" + margin.left + "," + margin.top + ")");

      x.domain(data.map(function(d) { return d.TIMESTAMP; }));
      y.domain([0,d3.max(data,function(d) { return d[MValue]; })]).nice();

      var xtickdelta   = Math.ceil(60/(width/data.length))
      xAxis.tickValues(x.domain().filter(function(d,i) { return !((i+Math.floor(xtickdelta/2)) % xtickdelta); }));

      svg.append("g")
          .attr("class","axis yaxis")
          .attr("transform","translate(" + width + ",0)")
          .call(yAxis.orient("right").tickFormat("").tickSize(0));

      var barwidth    = x.rangeBand();
      var fillwidth   = (Math.floor(barwidth*0.7)/2)*2+1;  // Breite der Volumenbars
      var bardelta    = Math.round((barwidth-fillwidth)/2);

      var mbar = svg.selectAll("."+mname+"bar")
          .data([data])
        .enter().append("g")
          .attr("class",mname+"bar");

      mbar.selectAll("rect")
          .data(function(d) { return d; })
        .enter().append("rect")
          .attr("class",mname+"fill")
          .attr("x",function(d) { return x(d.TIMESTAMP) + bardelta; })
          .attr("y",function(d) { return y(d[MValue]); })
          .attr("class",function(d,i) { return mname+i; })
          .attr("height",function(d) { return y(0) - y(d[MValue]); })
          .attr("width",fillwidth);
    });
  }
  barrender.mname = function(value) {
            if (!arguments.length) return mname;
            mname = value;
            return barrender;
        };

  barrender.margin = function(value) {
            if (!arguments.length) return margin.top;
            margin.top = value;
            return barrender;
        };

  barrender.MValue = function(value) {
            if (!arguments.length) return MValue;
            MValue = value;
            return barrender;
        };

return linerender;
} 

如何制作折线图而不是条形图?数据存储在一个csv文件中,并应显示在模块的最下部。

drakeson 回答:如何在D3中将条形图转换为线形图?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2812037.html

大家都在问