我试图创建一个函数来绘制一个简单的折线图,其中包含不同城市的二氧化碳排放量数据。在我的数据集中,每一列都是一个城市,每一行都是一年,因此这些数字指的是该位置每年释放到大气中的二氧化碳。
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+"); }");
,但无法正常工作。
有人知道如何解决此问题吗?
谢谢
答案 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]