2017-02-08 36 views
1

這是我的一段代碼,我無法在箱中獲取數據。 我是新來的d3,我認爲有序或scaleband規模有一些問題。任何人都可以幫忙按順序創建一個d3 v4直方圖

dom = (data.map(function(d) { return d[attri]; })); 

    x = d3.scaleBand()  
    .range([0,width]) 
    .paddingInner([0.1]) 
    .paddingOuter([0.3]) 
    .align([0.5]); 

    x.domain(dom); 

    bins = d3.histogram() 
    .domain(x.domain) 
    (mydata); 

回答

1

這裏有兩個問題。

第一個問題,domain是獲取(並作爲制定者以及)有括號:

x.domain() 

但不幸的是,這並不解決您的代碼,你可以這樣做:

bins.domain(x.domain()) 

...您的直方圖域與您的規模。原因是第二個問題:

在d3直方圖中,domain是一個具有兩個值(最小值和最大值)的數組。根據文檔:

如果指定了域,將域訪問器設置爲指定的函數或數組,並返回此直方圖生成器[...]直方圖域定義爲數組[min,max],其中min是最小可觀測值,max是最大可觀測值;兩個值都包含在內。生成直方圖時,該域之外的任何值都將被忽略。 (source

然而,現在,你x.domain()是幾個值的數組(從data.map)。你可以做x.domain()設置你的直方圖域如果你的比例是線性的。

因此,正確設置您的直方圖域。

+0

我想我們可以有一組值的域名,請參閱下面的鏈接http://stackoverflow.com/questions/29318223/d3js-histogram-with-ordinal-scale。我的域是相同的,它包含像[「marrried」,「未婚」,「離婚」等)的價值觀等。我想要類似v3的histogram.layout的東西在v4 –

+0

不,你不能。在那個鏈接中,你看到**直方圖域**作爲一組值嗎?不,因爲沒有。在這個問題中,OP使用序數標度來簡單地將一個數組值傳遞給直方圖。 –

+0

那麼不可能繪製我想在這裏實現的目標嗎?我是d3新手,你能幫忙嗎? –