javascript - 为什么馅饼的颜色没有改变?

标签 javascript d3.js

我是 d3.js 的初学者。今天,当我学习如何绘制饼图时,饼的颜色不会改变。不过我是按照d3 v4的介绍填的。这是我的代码:

<html>
<head>
<meta charset="UTF-8">
<title>pie map</title>
</head>
 
<body>
    <script src="http://d3js.org/d3.v4.min.js"></script>
    <script> 
        var width = 400;        
        var height = 400;    
        var dataset = [30,10,43,55,13];
        var svg = d3.select("body")    
                    .append("svg")     
                    .attr("width",width)      
                    .attr("height",height);     

        var pie=d3.pie();
        var piedata=pie(dataset);
        var outerRadius=150;
        var innerRadius=0;

        var arc=d3.arc()
                .innerRadius(innerRadius)
                .outerRadius(outerRadius);

        var color = d3.scaleOrdinal(d3.schemeCategoty10);

        var arcs=svg.selectAll("g")
                .data(piedata)
                .enter()
                .append("g")
                .attr("transform","translate("+ (width/2) +","+ (width/2) +")");


            arcs.append("path")
                .attr("fill",function(d,i){
                    return color[i];  //to fill color
                })
                .attr("d",function(d){
                    return arc(d);
                });


            arcs.append("text")
                .attr("transform",function(d){
                    return "translate("+arc.centroid(d)+")";
                })
                .attr("text-anchor","middle")
                .text(function(d){
                    return d.data;
                });
        console.log(dataset);
        console.log(piedata);
    </script>     
</body>
</html>

我想绘制这样的饼图: enter image description here

但我的是这样的: enter image description here

所以我很困惑,因为控制台没有错误。你知道为什么颜色没有出现在我的饼图中吗?如果您帮我解决这个问题,我将不胜感激。谢谢!

最佳答案

解决d3.schemeCategory10d3.schemeCategory10中的拼写错误后有2种可能的解决方案:

  1. 您可以尝试将比例序号从 var color = d3.scaleOrdinal(d3.schemeCategoty10); 移除为 var color = d3.schemeCategory10;
  2. 如果您希望它作为序数标度,您应该将 return color[i]; 更改为 return color(i);

这将是第一个解决方案的结果:

<html>
<head>
<meta charset="UTF-8">
<title>pie map</title>
</head>
 
<body>
    <script src="http://d3js.org/d3.v4.min.js"></script>
    <script> 
        var width = 400;        
        var height = 400;    
        var dataset = [30,10,43,55,13];
        var svg = d3.select("body")    
                    .append("svg")     
                    .attr("width",width)      
                    .attr("height",height);     

        var pie=d3.pie();
        var piedata=pie(dataset);
        var outerRadius=150;
        var innerRadius=0;

        var arc=d3.arc()
                .innerRadius(innerRadius)
                .outerRadius(outerRadius);

        var color = d3.schemeCategory10;

        var arcs=svg.selectAll("g")
                .data(piedata)
                .enter()
                .append("g")
                .attr("transform","translate("+ (width/2) +","+ (width/2) +")");


            arcs.append("path")
                .attr("fill",function(d,i){
                    return color[i];  //to fill color
                })
                .attr("d",function(d){
                    return arc(d);
                });


            arcs.append("text")
                .attr("transform",function(d){
                    return "translate("+arc.centroid(d)+")";
                })
                .attr("text-anchor","middle")
                .text(function(d){
                    return d.data;
                });
    </script>     
</body>
</html>

关于javascript - 为什么馅饼的颜色没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40968903/

相关文章:

javascript - 如何替换 JavaScript 中出现的所有字符串?

javascript - d3 序数尺度映射

javascript - 如何为多线图添加圆点?

javascript - 在字符串数组中连接多个数组

php - HTML/AJAX/PHP同步和谐?异步可以工作吗?

javascript - 对象没有在 javascript 中调用子类函数

javascript - d3 响应条形图

javascript - 编辑饼图中的数据而不是创建新饼图

javascript - d3 - 平行坐标图的图例未显示

javascript - 在 Web 应用程序中从网络摄像头或移动相机拍摄照片