折线图功能可从不同列中提取数据

时间:2018-10-14 11:22:28

标签: javascript d3.js

我试图创建一个函数来绘制一个简单的折线图,其中包含不同城市的二氧化碳排放量数据。在我的数据集中,每一列都是一个城市,每一行都是一年,因此这些数字指的是该位置每年释放到大气中的二氧化碳。

function lineChart(city){

// set the dimensions and margins of the graph
var margin = {top: 20, right: 20, bottom: 30, left: 50},
    width = 960 - margin.left - margin.right,
    height = 500 - margin.top - margin.bottom;

// parse the date / time
var parseTime = d3.timeParse("%Y");

// set the ranges
var x = d3.scaleTime().range([0, width]);
var y = d3.scaleLinear().range([height, 0]);

// define the line
var valueline = d3.line()
    .x(function(d) { return x(d.Year); })
    .y("function(d) { return y(d."+city+"); }");

;}

lineChart("london");

我知道代码不完整,但是我粘贴了一下以告知您我想做什么。我想通过将城市作为变量调用函数来为每个城市绘制不同的图形。我尝试使用此.y("function(d) { return y(d."+city+"); }");,但无法正常工作。

有人知道如何解决此问题吗?

谢谢

1 个答案:

答案 0 :(得分:1)

您不需要"周围的"function(d) { return y(d."+city+"); }",它告诉javascript将文本function(d) { return y(d.); }解释为字符串,从而得到{{1 y的}}属性。您想要执行该功能,而不仅仅是引用它。

要访问城市数据,您需要访问

function(d) { return y(d.london); }
来自对象d['london']

(也可以写为d)。由于d.london是存储当前城市名称的变量,因此可以使用

city

因此整行都是

d[city]