2016-09-15 42 views
1

我试图使用dc.js和crossfilter.js,但我总是如何加载dc.js和crossfilter.js?

"Uncaught TypeError: Cannot read property 'format' of undefined dc.js:484 
Uncaught TypeError: Cannot read property '1' of null header.js:3 
Uncaught ReferenceError: dc is not defined (index):39 " 

我觉得不是问题装载库的命令,但我无法弄清楚的格式是什么,为什么是它造成了一个问题!我甚至不使用外部文件来加载数据 我的index.html

<!DOCTYPE html> 
<html> 
<head> 
    <link type="text/css" rel="stylesheet" href="css/dc.css"/> 
    <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"> 
    <script type="text/javascript" src="js/crossfilter.js" ></script> 
    <script type="text/javascript" src="js/d3.js" ></script> 
    <script type="text/javascript" src="js/dc.js"></script> 
</head> 

<body> 

<div class="container"> 
<script type="text/javascript" src="js/header.js"></script> 

    <p>This example demonstrates assigning a threshold dynamically to a pie chart by creating a new dimension based on slider input.</p> 
    <div id="inputSlider"> 
     <div><input type="range" id="slideRange" value="0.5" min="0" max="1.0" step="0.1" onchange="updateSlider(this.value)"></div> 
     Score threshold: <span id="sliderValue">0.5</label> 
    </div> 
    <div id="dc-coreAcc-piechart"></div> 
    <div id="dc-score-barchart"></div> 

    <script type="text/javascript"> 
    var data = [ 
       { "book": "A", "scores": 45 }, 
       { "book": "B", "scores": 34 }, 
       { "book": "C", "scores": 54 }, 
       { "book": "D", "scores": 27 }, 
       { "book": "E", "scores": 70 }, 
       { "book": "F", "scores": 25 }, 
       { "book": "G", "scores": 92 }, 
       { "book": "H", "scores": 22 }, 
       { "book": "I", "scores": 40 }, 
       { "book": "J", "scores": 10 }, 
       { "book": "K", "scores": 40 } 
       ]; 
    //## Create Chart Objects 
    var scoreChart = dc.barChart("#dc-score-barchart") 
         .xAxisLabel('book_id') 
         .yAxisLabel('score'); 
    var goodYesNoPieChart = dc.pieChart('#dc-coreAcc-piechart'); 
    //### Create Crossfilter Dimensions and Groups 
    var ndx = crossfilter(data); 
    var all = ndx.groupAll(); 
    var bookDimension = ndx.dimension(function (d) {return d.book;}), 
     bookscoresGroup = bookDimension.group().reduceSum(function(d) {return d.scores;}); 
    //## score bar chart 
    scoreChart.width(320) 
     .height(320) 
     .dimension(bookDimension) 
     .group(bookscoresGroup) 
     .elasticY(true) 
     .x(d3.scale.ordinal()) 
     .xUnits(dc.units.ordinal) 
     .colors(["orange"]) 
     .yAxis().ticks(5); 
    //## pie chart 
    // reusable function to create threshold dimension 
    function coreCount_from_threshold() { 
     var scoreThreshold=document.getElementById('slideRange').value; 
     scoreThreshold=parseFloat(scoreThreshold); 
     if (isNaN(scoreThreshold)) { 
      scoreThreshold=0.5 
     } 
     return ndx.dimension(function (d) { 
      var maxNumber=80; 
      if (d.scores >maxNumber*scoreThreshold) { 
       return 'High'; 
      } else { 
       return 'Low'; 
      } 
     }); 
    } 
    var coreCount = coreCount_from_threshold(); 
    var coreCountGroup = coreCount.group(); 
    goodYesNoPieChart 
     .width(320) 
     .height(320) 
     .radius(120) 
     .innerRadius(40) 
     .dimension(coreCount) 
     .title(function(d){return d.value;}) 
     .group(coreCountGroup) 
     .label(function (d) { 
      if (goodYesNoPieChart.hasFilter() && !goodYesNoPieChart.hasFilter(d.key)) { 
       return d.key + '(0%)'; 
      } 
      var label = d.key; 
      if (all.value()) { 
       label += '(' + Math.floor(d.value/all.value() * 100) + '%)'; 
      } 
      return label; 
     }) 
    dc.renderAll(); 
    //## change slider score value to re-assign the data in pie chart 
    function updateSlider(slideValue) { 
     var sliderDiv = document.getElementById("sliderValue"); 
     sliderDiv.innerHTML = slideValue; 
     coreCount.dispose(); 
     coreCount = coreCount_from_threshold(); 
     coreCountGroup = coreCount.group(); 
     goodYesNoPieChart 
      .dimension(coreCount) 
      .group(coreCountGroup); 
     dc.redrawAll(); 
    } 
    </script> 
</div> 
</body> 
</html> 

难道我做错了什么吗?有人可以帮助我在此

回答

0

Dc.js不支持D3版本4。切换到D3 v3.x,你的问题应该得到解决。