Javascript d3.js-读数以米计,如d3.js中的圆轴

Javascript d3.js-读数以米计,如d3.js中的圆轴,javascript,d3.js,gauge,Javascript,D3.js,Gauge,这一次,我被困在一个圆形轴上,无法读取仪表读数。我想沿着米计的圆形路径进行读数和滴答声(就像速度计): 然而,我没有得到确切的想法或解决方案。另外,更具体地说,我只想使用D3.js 我已经用一些参考资料创建了仪表,并试图从仪表中提取一些读数,但我不认为我所做的是最合适的方法 请引导我通过这个。这是我的密码:- <!DOCTYPE html> <meta charset="utf-8"> <title>Speedo-meter</title> &l

这一次,我被困在一个圆形轴上,无法读取仪表读数。我想沿着米计的圆形路径进行读数和滴答声(就像速度计):

然而,我没有得到确切的想法或解决方案。另外,更具体地说,我只想使用D3.js

我已经用一些参考资料创建了仪表,并试图从仪表中提取一些读数,但我不认为我所做的是最合适的方法

请引导我通过这个。这是我的密码:-

<!DOCTYPE html>
<meta charset="utf-8">
<title>Speedo-meter</title>
<script src="jquery-1.9.1.min.js"></script>
<style>

 svg
 {
  margin-left: 30px;
  margin-top: 30px;
  border: 1px solid #ccc;
 }

 </style>
 <body>
 <script type="text/javascript" src="http://d3js.org/d3.v3.min.js"></script>
 <script>

 var data = {
        "title": "Meter Gauge",
        "value": 50,
        "maxValue": 200
    };

 startAngle = 90, endAngle = 270, innerRad=175 , outerRad=185 ;

 var svg = d3.selectAll("body").append("svg")
            .attr("width", 500)
            .attr("height", 500);

  var arc = d3.svg.arc()
        .innerRadius(innerRad)
        .outerRadius(outerRad)
        .startAngle(90 * (Math.PI/180))
        .endAngle(270 * (Math.PI/180));

  var title = svg.append("text")
            .attr("x", 50)
            .attr("y", 50)
            .style("text-anchor", "start")
            .text("Click on the meter line to turn the needle");

  var plot = svg.append("g")
            .attr("class", "arc")
            .attr("transform", "translate(100 , 150 )");

  var gauge = plot.append("path")
            .attr("d", arc)
            .attr("class", "gauge")
            .attr("fill", "#ddd")
            .attr("stroke", "#000")
            .attr("transform", "translate(150,130) rotate(180)")
            .on("click", turnNeedle);

  var needle = svg.append("g")
            .attr("class", "needle")
            .attr("transform", "translate( 100 , 110 )")
            .append("path")
            .attr("class", "tri")
            .attr("d", "M" + (300/2 + 3) + " " + (120 + 10) + " L" + 300/2 + " 0 L" +                                         (300/2 - 3) + " " + (120 + 10) + " C" + (300/2 - 3) + " " + (120 + 20) + " " + (300/2 + 3) + " " + (120 + 20) + " " + (300/2 + 3) + " " + (120 + 10) + " Z")
            .attr("transform", "rotate(-100, " + 300/2 + "," + (120 + 10) + ")");

    function turnNeedle()
    {
      needle.transition()
            .duration(2000)
            .attrTween("transform", tween);

     //console.log(d3.select(".needle").attr("cx"));
     function tween(d, i, a) {
        return d3.interpolateString("rotate(-100, 150, 130)", "rotate(100, 150, 130)");
     }
    }

    var Speeds = data.maxValue/20;

    var divisions = ((endAngle-startAngle))/Speeds ;
    console.log("divisions=>"+divisions);

    j=0;
    endAngle1 = startAngle+ 20;
    startAngle = 72;


    for(i=0;i<=10;i++)
    {
       endAngle = startAngle+ divisions;
       newArc = d3.svg.arc()
                .innerRadius(innerRad - 10)
                .outerRadius(outerRad)
                .startAngle((startAngle+=divisions) * (Math.PI/180))
                .endAngle(endAngle * (Math.PI/180));


       var gauge = plot.append("path")
            .attr("d",newArc)
            .attr("class", "gauge")
            .attr("id", "gauge"+i)
            .attr("fill", "#ddd")
            .attr("stroke", "#000")
            .attr("transform", "translate(150,130) rotate(180)")
            .on("click", turnNeedle);

            var text = plot.append("text")
                        .style("font-size",14)
                        .style("fill","#000")
                        .style("text-anchor", "start")
                        .attr("x", -165 + 6)
                        .attr("dy",".35em")
                        .append("textPath")
                        .attr("xlink:href","#gauge"+i)
                        .attr("startOffset",5)
                        .text(Speeds*i);
            }
     </script>

速比表
svg
{
左边距:30px;
边缘顶部:30px;
边框:1px实心#ccc;
}
风险值数据={
“标题”:“米规”,
“价值”:50,
“最大值”:200
};
startAngle=90,endAngle=270,innerRad=175,outerRad=185;
var svg=d3.selectAll(“body”).append(“svg”)
.attr(“宽度”,500)
.attr(“高度”,500);
var arc=d3.svg.arc()
.innerRadius(innerRad)
.外层(外层)
.startAngle(90*(数学PI/180))
.端角(270*(数学PI/180));
var title=svg.append(“文本”)
.attr(“x”,50)
.attr(“y”,50)
.style(“文本锚定”、“开始”)
.text(“点击仪表线转动指针”);
var plot=svg.append(“g”)
.attr(“类”、“弧”)
.attr(“转换”、“翻译(100150)”);
变量量表=绘图。追加(“路径”)
.attr(“d”,弧)
.attr(“等级”、“量规”)
.attr(“填充”、“ddd”)
.attr(“笔划”,“千”)
.attr(“变换”、“平移(150130)旋转(180)”)
。打开(“点击”,旋转针);
var针=svg.append(“g”)
.attr(“类”、“针”)
.attr(“转换”、“翻译(100110)”)
.append(“路径”)
.attr(“类”、“三类”)
.attr(“d”、“M”+(300/2+3)++”+(120+10)+“L”+300/2+“0L”+(300/2-3)++”(120+10)+“C”+(300/2-3)++“(120+20)++”+(300/2+3)++“(120+20)++”+(300/2+3)+(120+10)+“Z”)
.attr(“变换”、“旋转(-100)、+300/2+”、“+(120+10)+”);
函数turnNeedle()
{
1.transition()
.期限(2000年)
.attrTween(“转换”,tween);
//console.log(d3.select(“.needle”).attr(“cx”);
函数吐温(d,i,a){
返回d3.插值字符串(“旋转(-100150130)”,“旋转(100150130)”;
}
}
var速度=data.maxValue/20;
var分割=((端角星形缠绕))/速度;
console.log(“divisions=>”+divisions);
j=0;
端角1=星形缠结+20;
startAngle=72;

对于(i=0;这里有一些量规的例子,可能会有帮助。@pravin:先生,我想我在第一行提到了圆轴。要用记号和读数绘制圆轴,这是我的问题。@user2339182:哦!我的错!对不起,这是巧合,我在你的页面中发布了注释,而不是其他一些。当你有很多标签时会发生这种情况“这些都是我在这篇文章中提到的圆形轴上的记号。如果有任何帮助,我们将不胜感激。我根据msqr制作了一个仪表元件,你可以看到。”。