[英]How do I Format a JS Object for a D3 Dendrogram Chart in (Angular)JS
我正在嘗試使用D3樹狀圖來擴展ElasticUI項目。
Apolagia:我知道ElasticUI已被貶值是因為它不再被維護,但是它帶給我很長的路要走,讓我用我自己的方式來嘗試彈性數據,因為Java和AngularJS的初學者絕對不可能夢見自己跳了起來並僅使用elasticsearch.js並嘗試為其編寫“服務”。 第二件事:我說我有一個對象,但是據我所知,它可能是JSON數據,數組或格式化的字符串。 瀏覽器控制台說我的數據包含“對象”。
這是我的html的精簡版,只有樹狀圖。
<body eui-enabled="true" ng-app="moviesearch" ng-controller="IndexController" eui-index="indexName">
<div id="dendrogram" class="d3-chart">
<eui-singleselect field="tweetMsg" size="10"></eui-singleselect>
<div class="nav nav-list" eui-aggregation="ejs.TermsAggregation('entries').field('tweetMsg').size(20)" eui-filter="ejs.TermsFilter('tweetMsg', bucket.key)" eui-enabled="filter.enabled" eui-filter-self="true">
<eui-var eui-key="dendroSelectorChartConfig" eui-value='
{
"name": "Top Level",
"children": (treeMap(aggResult.buckets))
}
'/>
<div class="container well">
<div d3-hierarchy="dendroSelectorChartConfig" depth="3"></div>
</div>
</div>
</div>
這是我控制器中的功能。 它可能不應該在我的控制器中嗎? 我無法使其以任何其他方式工作。
$scope.treeMap = function mainTreeMapDiagramData(data) {
var i;
for(i = 0; i < data.length; i++) {
console.log("{\"name\":" + "\"" + data[i].key + "\"},");
// return "{\"name\":" + "\"" + data[i].key + "\"},";
}
};
您可能會笑,但這實際上將生成的聚合條款正確記錄到瀏覽器控制台中:
app.js:87 {"name":"https"},{"name":"t.co"},{"name":"movie"},{"name":"rt"}, {"name":"the"},{"name":"film"},{"name":"a"},{"name":"to"},{"name":"in"},{"name":"of"},{"name":"and"},
等等...
但是,如果我注釋掉console.log()並取消注釋“ return”,則D3不顯示任何內容。 如果我將上述列表直接復制到我的HTML中,它將起作用。
我什至還沒有開始考慮下一個級別,就像在孩子們的孩子中一樣,我很樂意只為上一個級別工作。
感謝您的閱讀!
編輯:如果有幫助,則該項目位於此處在線: https : //analytics.molch.at/dendrogram.html
這工作:
$scope.treeMap = function mainTreeMapDiagramData(data) {
var i;
arr = [];
for (var key in data){
if (typeof data[key] !== 'function') {
arr.push({ name: data[key].key });
}
}
return arr;
};
然而。 單級樹狀圖實際上並不是很多樹狀圖。 現在,我必須弄清楚如何在以前的termAggregation中為每個存儲桶添加一個termAggregation。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.