美文网首页d3(v5)
d3之简单柱状图

d3之简单柱状图

作者: 那头黑马 | 来源:发表于2019-08-21 17:13 被阅读0次

柱状图其实是很简单,就是矩形和线的组合,在这里为操作方便我们一般会添加g组。g标签没有任何别的作用,只是把它的所有children聚到一起而已。下面是800宽,600高的svg上添加了一个柱图的g组。

效果图:


p1.png

代码如下,需要注意的是,g组的transform不会影响坐标的改变。
还有y需要特别注意下,跟数学上的y从下到上不一样,svg的0点在最上方。

<script>
        var dataset=[100,50,80,200];

        var _svg = d3.select("body")
                .append("svg")
                .attr("width","800")
                .attr("height","600")
                .style("background","lightgrey");

        var _g=_svg.append("g");//添加g组

        _g.attr("transform","translate(50,120)");
        
        var barWidth = 20, barPadding = 30;
        var x2 = barPadding * ( dataset.length + 1 ) + barWidth * dataset.length;

        _g.append("line")
                .attr("x1",0)
                .attr("y1","180")
                .attr("x2",x2)
                .attr("y2","180")
                .attr("stroke","steelblue");
        
        _g.selectAll("rect")
                .data(dataset)
                .enter()
                .append("rect")
                .attr("x",function(d,i){
                    //20为柱子宽度,30为柱子之间的间距
                    return barPadding + barWidth * i + barPadding * i;
                })
                .attr("y",function(d,i){
                    //d为柱子的高度,180为x轴的y值 
                    return 180 - d;
                })
                .attr("height",function(d){return d})
                .attr("width","20")
                .style("fill","steelblue");

        _g.selectAll("text")
                .data(dataset)
                .enter()
                .append("text")
                .attr("x",function(d,i){
                    return 30+20*i+30*i;
                })
                .attr("y",function(d){
                    return 160-d;
                })
                .text(function(d){return d})
                .attr("text-anchor","middle")
                .attr("fill","darkblue");
    </script>

这里用的是数组里的真实的数据作为坐标算的,如果数据特别大的话就得用到比例尺了~

相关文章

  • d3之简单柱状图

    柱状图其实是很简单,就是矩形和线的组合,在这里为操作方便我们一般会添加g组。g标签没有任何别的作用,只是把它的所有...

  • Js+SVG 柱状图 & D3+SVG 柱状图

    Js+SVG 柱状图 D3+SVG 柱状图 Js vs D3 两个段代码实现的效果是相同的. 总的来说, 通过比较...

  • 学习d3时遇到的v3 v4 接口变化记录

    参考 教程D3 wikiD3 官网D3 中文手册 要做一个柱状图,实在有太多的选择。例如 echarts等图库,简...

  • d3 - 简单柱状图实现

    实现简单柱状图 var data = [10, 5, 12, 15]; var width = 300 con...

  • d3之柱状图封装

    效果图如下: 数据准备 封装方法 调用方法画图

  • 柱状图1之简单柱状图

    要点 根据具体情况调整长宽比 最好柱子高度按照降序排列 所有柱子应该是同一种颜色(可以特殊颜色标记某几个焦点柱子)...

  • iOS一款简单的图表库-FSChartView

    Introduction FSChartView一款简单的图表库,内含柱状图(垂直&水平)、折线图、饼状图。柱状图...

  • 可视化库

    —标准图表绘制— D3https://github.com/d3/d3/wiki/gallery简单图:https...

  • 多色柱状图

    网上的第三方柱状图基本上都是单色柱状图,但最近公司要实现多色柱状图,于是自己封装了一个简单的多色柱状图。核心代码如...

  • QCustomPlot之柱状图(三)

    在QCustomPlot中,柱状图需要使用QCPBars类, QCPBars的使用很简单 竖向柱状图 创建一个柱状...

网友评论

    本文标题:d3之简单柱状图

    本文链接:https://www.haomeiwen.com/subject/jusisctx.html