我主要使用 Scala 來滿足我所有的資料工程需求,并且我已經感覺到在使用 Pyhton 中可用的一些好的庫時沒有太多支持。一個例子是繪圖庫。Scala 中似乎沒有。我在 GitHub 中找到的那些像 matplotlib4j 似乎已經過時了,或者沒有人再研究它了。
我意識到我們可以使用 Javascript 庫,我遇到了 D3,我想嘗試一下。我在下面有這個例子:
%angular
<div>
<svg class="chart"></svg>
</div>
<script>
function useD3() {
var data = [4, 8, 15, 16, 23, 42];
var width = 420,
barHeight = 20;
var x = d3.scale.linear()
.domain([0, d3.max(data)])
.range([0, width]);
var chart = d3.select(".chart")
.attr("width", width)
.attr("height", barHeight * data.length);
var bar = chart.selectAll("g")
.data(data)
.enter().append("g")
.attr("transform", function(d, i) { return "translate(0," i * barHeight ")"; });
bar.append("rect")
.attr("width", x)
.attr("height", barHeight - 1);
}
if (window.d3) {
useD3();
} else {
var sc = document.createElement('script');
sc.type = 'text/javascript';
sc.src = 'https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.16/d3.min.js';
sc.onload = useD3;
sc.onerror = function(err) { alert(err); }
document.getElementsByTagName('head')[0].appendChild(sc);
}
</script>
它呈現應有的效果,但我的問題是如何將資料從 Spark Scala 獲取到此 Javascript 中?例如,我從我的 DataFrame 計算之一列印出以下 scala 元組:
Threshold = 0.0, Features = 48
Threshold = 0.05, Features = 36
Threshold = 0.1, Features = 35
Threshold = 0.15, Features = 34
Threshold = 0.2, Features = 34
Threshold = 0.25, Features = 34
Threshold = 0.3, Features = 34
Threshold = 0.35, Features = 34
Threshold = 0.4, Features = 34
Threshold = 0.45, Features = 32
Threshold = 0.5, Features = 30
我想用 x 軸上的閾值和 y 軸上的特征來繪制它。我怎么能這樣做?
uj5u.com熱心網友回復:
d3 是一個相當低級的庫,它可以讓您使用資料到視覺變數(通常是 svg 元素屬性)的映射來構建非常復雜的互動式可視化。
但是,我建議如果您只想在 javascript 中使用“標準”圖表,例如散點圖、條形圖等,請使用基于 d3 的圖表庫,例如 britecharts、billboard 等,這些圖表庫以更方便和更短的語法提供這些圖表,而不是通過自己在 d3 中構建它們來“重新發明輪子”,您必須在其中繪制資料,計算范圍/比例并設定軸(作業量驚人)。
https://britecharts.github.io/britecharts/tutorial-scatter-plot.html
https://naver.github.io/billboard.js/
其他可用,但這些是積極維護
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/366583.html
