Javascript 在SVG元素-D3Java脚本中使用类似数组的对象(节点列表)
我对java脚本和使用d3库进行仪表板开发非常陌生。我正试图用y轴上的值和x轴上的时间绘制散点图 我将数据存储为类似数组的格式(节点列表),如下所示(PFA) 我想把这些数据传给plot散点图,我使用下面的代码Javascript 在SVG元素-D3Java脚本中使用类似数组的对象(节点列表),javascript,d3.js,svg,scatter-plot,nodelist,Javascript,D3.js,Svg,Scatter Plot,Nodelist,我对java脚本和使用d3库进行仪表板开发非常陌生。我正试图用y轴上的值和x轴上的时间绘制散点图 我将数据存储为类似数组的格式(节点列表),如下所示(PFA) 我想把这些数据传给plot散点图,我使用下面的代码 d3.csv("data.csv", function(error, data) { data = processedData; var parser = d3.timeParse("%d-%m-%Y %H:%M:%S"); data.date = parser(data.da
d3.csv("data.csv", function(error, data) {
data = processedData;
var parser = d3.timeParse("%d-%m-%Y %H:%M:%S");
data.date = parser(data.date);
debugger;
//data.date = parser(data.date);
// Add X axis --> it is a date format
var x = d3.scaleTime()
.domain(d3.extent(data, function(d) { return parser(d.date); }))
.range([ 0, width ]);
svg.append("g")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x).ticks(15));
// Add Y axis
var y = d3.scaleLinear()
.domain([1200, d3.max(data, function(d) { return +d.value; })])
.range([ height, 0 ]);
svg.append("g")
.call(d3.axisLeft(y));
// Color scale: give me a specie name, I return a color
var color = d3.scaleOrdinal()
.domain(["1", "2", "3", "4" ])
.range([ "#402D54", "#D18975", "#8FD175", "#69b3a2"]);
// Add dots
svg.append('g')
.selectAll("dot")
.data(data)
.enter()
.append("circle")
.attr("cx", function (d) { return x(parser(d.date)); } )
.attr("cy", function (d) { return y(d.value); } )
.attr("r", 1.3)
.style("fill", function (d) { return color(d.type); });
});
运行此脚本时,图形未按预期绘制。我想问题是,在svg元素中,我试图使用d.date函数来调用它的值。但在节点列表中,此函数不起作用。有谁能建议我如何将上述节点列表数据转换为数组,并在我的svg元素中使用它 您的说明符不正确。鉴于您的日期字符串结构(
“5/12/2019 6:06:06 AM”
),它应该是:
var parser = d3.timeParse("%d/%m/%Y %I:%M:%S %p");
PS:除了这个主要问题,你还有一个关于边距的问题,特别是在平移轴时。我建议您设置边距(顶部、底部、左侧和右侧),然后相应地更改刻度和轴组。非常感谢Gerardo。是的,现在它工作了。当然,我也会设定利润率。
var parser = d3.timeParse("%d/%m/%Y %I:%M:%S %p");