0
使用Cubism.js石墨作爲其數據源我剛開始的我面對了以下問題:不要畫空指標
當我問立體派發現所有符合特定模式的指標「findMetrics 「它可以正確找到所有指標,但我希望它只繪製實際包含數據點的指標(忽略所有指標爲空)。
我建立了一個簡化的版本來說明問題:
<meta charset="utf-8" />
<style>@import url(//square.github.com/cubism/style.css);</style>
<div id="body">
<div id="graphs"></div>
<script src="http://d3js.org/d3.v2.js" charset="utf-8"></script>
<script src="http://square.github.com/cubism/cubism.v1.js" charset="utf-8"></script>
<script>
var context = cubism.context().serverDelay(5 * 60 * 1000).step(60 * 1000);
var graphite = context.graphite("http://graphite-server");
// Graphite search metric pattern. In my case this it returns 4 metrics
var findMetrics = 'carbon.agents.*.{errors,committedPoints}';
graphite.find(findMetrics, function(error, results) {
// Map find results to array and set to graphite.metric object type
var metrics = results.sort().map(function(i) { return graphite.metric(i); });
// Loop through the array and print stuff to "graphs" div
for (var i=0;i<metrics.length;i++){
var metricName = metrics[i].toString().split('.');
d3.select("#graphs").call(function(div) {
div.append("div").selectAll(".horizon")
.data([metrics[i]])
.enter().append("div")
.attr("class", "horizon")
.style("font-size", "10px")
.call(context.horizon().title(metricName[metricName.length-1]));
});
}
});
</script>
輸出示例: http://i.stack.imgur.com/s4rGZ.jpg
問題:
- 應該在哪裏過濾在立體主義進行級別還是在D3之一?
- 我如何告訴立體派或 D3不要繪製不包含任何數據的圖?
我希望有人能幫我解決這個問題。
在此先感謝您的幫助。
您是否嘗試過檢查的指標是否調用D3之前空終於解決了這個問題?即例如'if(metrics [i] .length> 0){d3.select(...)}'。 –