2013-10-23 91 views
0

我正尝试在POCO的dojo中绘制饼图。我无法画出来。有人能帮我弄清楚这个问题吗?我GOOGLE了很多,但无法找到确切的问题。无法在Dojo中绘制饼图

我能够绘制条形图,但看到饼图的问题。我在dojo商店中存储数据并将其转换为系列并提供给饼图,但最终什么都没看到。

如果有人帮我弄清楚这个问题,我将非常感激。

下面是我的代码:

在饼图可以使用格式
<script> 
    var geoData = { 
     identifier: 'Id', 
     label: 'Id', 
     items: [{ 
     Id: '1', 
     Name: 'Africa', 
     Age: 10, 
     Gender: 'Male', 
     Area: "Java", 
     Experience: 1 
     }, { 
     Id: '2', 
     Name: 'Asia1', 
     Age: 45, 
     Gender: 'Male', 
     Area: "C", 
     Experience: 3 
     }, { 
     Id: '3', 
     Name: 'Asia2', 
     Age: 35, 
     Gender: 'Male', 
     Area: "Java", 
     Experience: 2 
     }, { 
     Id: '4', 
     Name: 'Asia3', 
     Age: 23, 
     Gender: 'Male', 
     Area: "C", 
     Experience: 1 
     }, { 
     Id: '5', 
     Name: 'Asia4', 
     Age: 78, 
     Gender: 'Male', 
     Area: "Perl", 
     Experience: 4 
     }] 
    }; 

    var layoutGeo = [ 
     [{ 
     field: "Id", 
     name: "Id", 
     width: 10 
     }, { 
     field: "Name", 
     name: "Name", 
     width: 10, 
     editable: true 
     }, { 
     field: "Age", 
     name: "Age", 
     width: 10, 
     editable: true 
     }, { 
     field: "Gender", 
     name: "Gender", 
     width: 10, 
     editable: true, 
     type: "dojox.grid.cells.Select", 
     options: ["Male", "Female"] 
     }, { 
     field: "Area", 
     name: "Area", 
     width: 10, 
     editable: true 
     }, { 
     field: "Experience", 
     name: "Experience", 
     width: 10, 
     editable: true 
     }] 
    ]; 

    function plotPieChart() { 
     dojo.empty("peiDiv"); 

     // Create the chart within it's "holding" node 
     var pieChart = new dojox.charting.Chart2D("peiDiv"); 

     // Set the theme 
     pieChart.setTheme(dojox.charting.themes.Claro); 

     // Add the only/default plot 
     pieChart.addPlot("default", { 
     type: "Pie", 
     radius: 200, 
     fontColor: "black", 
     labelOffset: 20 
     }); 

     var series = makeseries(geoData); 

     // Add the series of data 
     pieChart.addSeries("Area", series); 

     // Render the chart! 
     pieChart.render(); 
    } 

    function makeseries(data) { 
     return [{ 
     datapoints: "items", 
     field: "Id", 
     name: "Id" 
     }, { 
     datapoints: "items", 
     field: "Name", 
     name: "Name" 
     }, { 
     datapoints: "items", 
     field: "Area", 
     name: "Area" 
     }]; 
    } 
    </script> 
</head> 
    <body class="claro"> 
    <div data-dojo-type="dojo/data/ItemFileWriteStore" data-dojo-props="data:geoData" data-dojo-id="geoStore" columnreordering="true"></div> 
    <b>Set the population to assign to all items</b><br> 
    <div id="grid" 
    data-dojo-type="dojox/grid/DataGrid" 
    data-dojo-props="store:geoStore, 
    structure:layoutGeo, 
    query:{}, 
    queryOptions:{'deep':true}, 
    rowsPerPage:40"> 
    </div> 
    <div display:inline-block> 
    <div data-dojo-type="dijit/form/Button" data-dojo-id="Add">Add</div> 
    <div data-dojo-type="dijit/form/Button" data-dojo-id="Remove">Remove</div> 
    </div> 
    <br> 
    <div display:inline-block> 
    <div id="chartDiv" style="width: 400px; height: 250px;"></div> 
    <br> 
    <div id="peiDiv" style="width: 400px; height: 250px;"></div> 
    </div> 
</body> 
</html> 
+0

让我知道你是否希望我提供更多的细节。请不要做负面投票,因为我需要立即回应。它不会得到太多的用户关注被否决投票 – Rajeev

+1

开发工具控制台说什么?任何错误?我会建议制作一个jsfiddle.net或jsbin.com,让人们更容易看到发生了什么。 – Steve

+0

这jsfiddle网址:http://jsfiddle.net/rajeevprasanna/4EGnu/5/ 此代码显示本地网格,但不是在jsfiddle – Rajeev

回答

1

makeseries功能没有返回数据。 Take a look at the example in the documentation here。如果,例如,你想绘制年龄的饼图中geoDatamakeseries应该是这样的:

function makeseries(data) { 
    return data.items.map(function(d) { 
     return {x: d['Id'], y: d['Age']}; 
    }); 
} 

Here's a jsfiddle显示出在你的原代码的上下文。它看起来像你还必须调整饼图包含div的大小。

+0

嘿托马斯,我正在寻找绘制该图区域的图表区域与没有epmoyees的饼图。我怎样才能达到这个 – Rajeev

+1

你需要正确地映射你的数据。遍历所有项目并将每个区域的计数存储在一个对象中,然后为每个区域返回一个类似于“{x:1,y:area_counts [area]}”的数组。可能有很多问题回答了如何在本网站上做到这一点。 –

+0

我已经更新了[我原来的jsfiddle](http://jsfiddle.net/tupton/u9UjY/),与您所谈论的内容相符。 –