簡體   English   中英

D3使用對象數組從鍵中獲取值

[英]D3 Getting values from keys using array of objects

因此,我讀了一個關於“國家GDP”的csv文件,並過濾掉了不需要的列和國家。 現在,我想知道如何從該對象數組中提取值,並使用它們為多系列折線圖創建x和y軸。 這是我的代碼

    function country(element) {
    return element.CountryName == "Brazil" ||
            element.CountryName == "China" ||
            element.CountryName == "Russian Federation" ||
            element.CountryName == "United Kingdom" ||
            element.CountryName == "United States" ||
            element.CountryName == "Germany";
}
d3.csv("GDP.csv", function(d) {
    return {
        CountryName : d["Country Name"],
        Indicator : d["Indicator Name"],
        y2004 : d["2004"],
        y2005 : d["2005"],
        y2006 : d["2006"],
        y2007 : d["2007"],
        y2008 : d["2008"],
        y2009 : d["2009"],
        y2010 : d["2010"],
        y2011 : d["2011"],
        y2012 : d["2012"]
    };
},
    function(error, rows) {
    //document.write(rows);
    dataset = rows;
    var filtered = dataset.filter(country);
    console.log(filtered);

    //Code to create axes and map keys
});

現在,我目前有一個由6個對象組成的數組,每個對象在專門命名的鍵處都有值。 我見過的示例通常會從文件的標題行讀取鍵值,但是我將如何嘗試這種方法呢?

X軸表示2004-2012年,即列名和鍵值。 Y軸是當年這些值的范圍。 結果6行是針對每個國家的。

我要遵循的示例是http://bl.ocks.org/mbostock/3884955

我需要解析日期嗎? 我不這么認為,因為我只是處理年份數字,它們是關鍵值,而不是關鍵值。 謝謝。

我將整理數據,以便每個點有4個鍵:

{country:"Germany", indicator:"...",  year:2004, value:55}

而不是每年都有鑰匙。 只需對您的csv調用進行后期處理。

在執行此操作時,請確定最小/最大年份和最小/最大值。

接下來,您將使用[minYear,maxYear]域建立年份標度(x軸)。 接下來,使用[minValue,maxValue]的域為y軸建立一個值刻度。

D3希望使用具有相同鍵集的對象數組。 如果需要,請進行預處理,在此階段,您可以將數據遷移為類似以下內容的內容:

[
    { key: value, key2: value },
    { key: value, key2: value },
    { key: value, key2: value },
    { key: value, key2: value },
    { key: value, key2: value }
]

否則,您將在D3上度過非常糟糕的時光,因為該工具包的大多數功能編程功能對您來說根本無法使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM