在D3饼图中添加时钟点

ojsglobal

我对D3非常陌生-实际上我只是昨天才开始-在这里有一个甜甜圈饼图:

var dataset = new Array();

dataset[0] = {"value":"50","color":"red"};
dataset[1] = {"value":"20","color":"blue"};

var pie = d3.layout.pie().sort(null).value(function(d){return d.value;});

    var h = w = 500;
    var center = w / 2;
    var outerRadius = ((h/2)-5);
    var innerRadius = outerRadius-10;
    var arc = d3.svg.arc()
        .innerRadius(innerRadius)
        .outerRadius(outerRadius);

    var arcOutter = d3.svg.arc()
        .innerRadius(outerRadius)
        .outerRadius(outerRadius + 1);

    var arcInner = d3.svg.arc()
        .innerRadius(innerRadius)
        .outerRadius(innerRadius - 1);


    //Create SVG element
    var svg = d3.select("body")
        .append("svg")
        .attr("width", w)
        .attr("height", h);

    //Set up groups
    var arcs = svg.selectAll("g.arc")
        .data(pie(dataset))
        .enter()
        .append("g")
        .attr("class", "arc")
        .attr("transform", "translate(" + center + ", " + center + ")");


    //Set up outter arc groups
    var outterArcs = svg.selectAll("g.outter-arc")
        .data(pie(dataset))
        .enter()
        .append("g")
        .attr("class", "outter-arc")
        .attr("transform", "translate(" + center + ", " + center + ")");

    //Set up outter arc groups
    var innerArcs = svg.selectAll("g.inner-arc")
        .data(pie(dataset))
        .enter()
        .append("g")
        .attr("class", "inner-arc")
        .attr("transform", "translate(" + center + ", " + center + ")");


    //Draw arc paths
    arcs.append("path")
        .attr("fill", function (d, i) 
        {
        return d.data.color;
    }).attr("d", arc);

    //Draw outter arc paths
    outterArcs.append("path")
        .attr("fill", 'green')
        .attr("d", arcOutter).style('stroke', 'white')
        .style('stroke-width', 0);

    //Draw inner arc paths
    innerArcs.append("path")
        .attr("fill", 'green')
        .attr("d", arcInner).style('stroke', 'white')
        .style('stroke-width', 0);

jsFiddle图表

但是我正在努力添加4个时钟点及其时间表(上午12点,下午3点,下午6点,9点),我尝试搜索时钟示例,但它们都是工作时钟,而不仅仅是点。

我希望它看起来像这样:

在此处输入图片说明

任何帮助将不胜感激。

尼科斯

我不知道它在美学上的正确性,但是在这里。您可以做的是在这些位置的图表中添加4个线段:

[w / 2,0],[w / 2,h],[0,h / 2],[w,h / 2]

如果添加以下行,则可以实现此目的:

   var x=d3.scale.linear().domain([0,outerRadius]).range([0,w])
   var y=d3.scale.linear().domain([0,outerRadius]).range([h,0])

   svg.append('line').attr("x1",x(outerRadius/2)).attr("y1",0).attr("x2",x(outerRadius/2)).attr("y2",20)
   svg.append('line').attr("x1",x(outerRadius/2)).attr("y1",y(outerRadius)).attr("x2",x(outerRadius/2)).attr("y2",y(outerRadius)-20)

   svg.append('line').attr("x1",0).attr("y1",y(outerRadius/2)).attr("x2",20).attr("y2",y(outerRadius/2))
   svg.append('line').attr("x1",x(outerRadius)).attr("y1",y(outerRadius/2)).attr("x2",x(outerRadius)-20).attr("y2",y(outerRadius/2))

请注意,您必须创建一个css条目,以便显示该行:

线{   
    显示:块;
    中风:黑色;
}

JSFiddle在这里

希望这可以帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将时钟点添加到d3饼图中

来自分类Dev

如何从d3饼图中删除光标指针

来自分类Dev

如何从d3饼图中删除光标指针

来自分类Dev

在D3.js饼图中添加图例

来自分类Dev

d3.js饼图时钟

来自分类Dev

d3.js饼图时钟

来自分类Dev

如果有足够的空间,D3将圆弧标签放在饼图中

来自分类Dev

在d3中更新值时如何在饼图中进行平滑过渡?

来自分类Dev

d3如何在饼图中与切片一起转换图像

来自分类Dev

如果有足够的空间,D3将圆弧标签放在饼图中

来自分类Dev

d3饼图/甜甜圈图中的标签过渡

来自分类Dev

在饼图中使用鼠标悬停并在 d3 js 中显示标签

来自分类Dev

如何使用D3js将图例添加到饼图中?以及如何集中饼图?

来自分类Dev

D3线性径向时钟

来自分类Dev

向D3强制布局图中添加OnClick事件

来自分类Dev

如何使用d3在条形图中添加标记

来自分类Dev

如何更新D3饼图

来自分类Dev

D3多个饼图标签

来自分类Dev

D3多个饼图更新

来自分类Dev

d3饼图排序过渡

来自分类Dev

在饼图中使用鼠标悬停并在 d3 v3 js 中显示标签

来自分类Dev

有没有办法在d3中向饼图添加突出显示?

来自分类Dev

如何在D3中的节点上绘制的饼图上添加鼠标悬停属性?

来自分类Dev

如何在D3中为饼图添加标签颜色?

来自分类Dev

在发生鼠标悬停事件时向d3饼图添加更多文本

来自分类Dev

如何在D3中的节点上绘制的饼图上添加鼠标悬停属性?

来自分类Dev

在发生鼠标悬停事件时向d3饼图添加更多文本

来自分类Dev

在D3饼图之外添加标签不起作用

来自分类Dev

如何在D3的条形图中的条形图中添加文本图例?