Poo某人 2020-03-23 15:30 采纳率: 40%
浏览 245
已结题

D3.js X,Y轴正常显示,但是折线显示不出来

var width = 1400,
height = 200,
margin = 30,
g_width = width - margin - margin,
g_height = height - margin - margin;

    var data = [

        { x: "2017-11-30", y: 5 },
        { x: "2018-12-30", y: 5 },
        { x: "2018-1-30", y: 5 },
        { x: "2018-2-30", y: 5 },
        { x: "2018-3-30", y: 9 },
        { x: "2018-4-30", y: 7 },
        { x: "2018-5-30", y: 5 },
        { x: "2019-6-30", y: 3 },
        { x: "2018-7-30", y: 4 },
        { x: "2018-8-30", y: 2 },
        { x: "2018-9-30", y: 3 },
        { x: "2020-10-3", y: 2 }
    ];

    //X,Y比例尺
    var datamax = d3.max(data, function (d: { x: any; }) { return d.x; });
    var datamin = d3.min(data, function (d: { x: any; }) { return d.x; });

    var xscale = d3.scaleBand()
        .domain([datamin, datamax])
        .range([0, width]);

    var yscale = d3.scaleLinear()
        .domain([0, 30])
        .range([height - 2 * margin, 0]);

    //svg
    var svg = d3.select("#container")   //选择元素
        .append("svg")   //添加元素
        .attr("width", width)   //设置属性
        .attr("height", height)
        .attr("transform", "translate(30,0)")

    // g
    var g = d3.select("svg")
        .append("g")
        .attr("transform", "translate(" + margin + "," + margin + ")")

    //X,Y轴
    var x_axis = d3.axisBottom(xscale).ticks(12);
    var y_axis = d3.axisLeft(yscale);

    //g元素与X轴Y轴绑定
    g.append("g")
        .call(x_axis)
        .attr("transform", "translate(0," + g_height + ")")
    g.append("g")
        .call(y_axis)
        .append("text")  //添加轴标签
        .text("price")

        //创建线生成器
    var line = d3.line()
        .x(function (d: { x: any; }) { return xscale(d.x); })
        .y(function (d: { y: any; }) { return yscale(d.y); })
        .curve(d3.curveLinear); 

    //绘制折线
    svg.selectAll("path.line")
        .data(data)
        .enter()
        .append("path")
        .attr("class", "line");

    svg.selectAll("path.line")
        .data(data)
        .attr("d", function (d: any) { return line(d); });

    //连接圆圈
    data.forEach(function (list) {
        svg.append("g")
            .selectAll("circle")
            .data(list)
            .enter()
            .append("circle")
            .attr("class", "dot")
            .attr("cx", function (d: { x: any; }) { return xscale(d.x); })
            .attr("cy", function (d: { y: any; }) { return yscale(d.y); })
            .attr("r", 4.5)
    });

图片说明

X,Y轴正常显示,但是折线显示不出来
图片说明

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-03-23 17:31
    关注

    把x轴的日期换成数字可以显示出来么

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog