javascript - 如何将垂直网格线添加到我的 d3 图表

标签 javascript css d3.js gridlines

我想知道我做错了什么。我遵循了一些关于在 3DJS V4 中制作网格线的教程 ( Vertical grid Simple gridlines in d3js v4 ),并且我尝试将他们的代码与我自己的代码结合起来。

我的图表是这样的: enter image description here

但是我希望在 svg 中有一些垂直网格线,这样图表会更容易阅读。

我的代码:

function makeChart(desktopData,mobileData,tabletData){
    console.log(desktopData);
    var WIDTH = 1200,
        HEIGHT = 300,
        MARGINS = {
                top:20,
            right:20,
            bottom:20,
            left:50
        }
    var vis = d3.select("#visualisation"),
        WIDTH = 1200,
        HEIGHT = 300,
        MARGINS = {
            top: 20,
            right: 20,
            bottom: 20,
            left: 50
        },
        xScale = d3.scale.linear().range([MARGINS.left,WIDTH-MARGINS.right]).domain([00,23]),

        yScale = d3.scale.linear().range([HEIGHT - MARGINS.top, MARGINS.bottom]).domain([00,100]),

        xAxis = d3.svg.axis()
            .scale(xScale)


        yAxis = d3.svg.axis()
            .scale(yScale)
            .ticks(10)
            .tickPadding(20)
            .orient("left");

    vis.append("svg:g")
        .attr("class","axis")
        .attr("transform", "translate(0," + (HEIGHT - MARGINS.bottom) + ")")
        .call(xAxis);

    vis.append("svg:g")
        .attr("class","axis")
        .attr("transform", "translate(" + (MARGINS.left) + ",0)")
        .call(yAxis);

    var lineGen = d3.svg.line()
        .x(function(d){
            return xScale(d.uur);
        })
        .y(function(d){
            return yScale(d.pageviews);
        });

    vis.append('svg:path')
        .attr('d', lineGen(desktopData))
        .attr('stroke','deepskyblue')
        .attr('stroke-width',2)
        .attr('fill','none');

    vis.append('svg:path')
        .attr('d', lineGen(mobileData))
        .attr('stroke','orange')
        .attr('stroke-width',2)
        .attr('fill','none');

    vis.append('svg:path')
        .attr('d', lineGen(tabletData))
        .attr('stroke','deeppink')
        .attr('stroke-width',2)
        .attr('fill','none');



// gridlines in y axis function
    function make_y_gridlines() {
        return d3.svg.axis(yScale)
    }

    // add the Y gridlines
    vis.append("g")
        .attr("class", "grid")
        .call(make_y_gridlines()
            .tickSize(-WIDTH)
            .tickFormat("")
        )

}

我的CSS:

.grid line {
  stroke: lightgrey;
  stroke-opacity: 0.7;
  shape-rendering: crispEdges;
}

.grid path {
  stroke-width: 0;
}

最佳答案

如果我没有弄错你的 CSS,你的 .grid path{stroke-width:0;} 应该是 .grid path{stroke-width:0.5;} 0.5 可以是您想要的任何数字。笔划宽度为 0 会有效地删除线条。

关于javascript - 如何将垂直网格线添加到我的 d3 图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47657739/

相关文章:

reactjs - 如何在弹出 map 框中使用 D3 图形?

javascript - JQuery slider 不工作。下一个和上一个按钮分别在最后一个和第一个图像时应该消失

javascript - 在谷歌地图上显示加载消息

javascript - 如何在数组中创建重复的对象

html - 为什么div显示:table-row ignore margin?

javascript - 在图表中显示低于或高于阈值的区域在 D3 中不起作用

javascript - 在 JS 中转动特定的文本 block 并生成行

javascript - 图片库 - Pinterest 喜欢使用 CSS 进行布局吗?

javascript - Bootstrap 3 Accordion 折叠在 iphone 上不起作用

javascript - 如何在节点处将HTML代码添加到D3树形图?