Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法根据数据缩放d3.js中的yaxis_Javascript_D3.js - Fatal编程技术网

Javascript 无法根据数据缩放d3.js中的yaxis

Javascript 无法根据数据缩放d3.js中的yaxis,javascript,d3.js,Javascript,D3.js,在下面的代码中,我无法检测y轴为何超出最大值 x、 域在下面的代码中运行良好,但y.domain不能。然而,如果我给出我在下面评论过的静态值,我的线图工作得很好,但我想使它成为动态的 我的csv数据有3列 列名为date、for和act 日期被解析为日期格式,而for和act列是数字 绘制两列图形的想法来自 目前我的图表是这样的。 var margin={顶部:20,右侧:20,底部:100,左侧:70}, 宽度=1200-margin.left-margin.right, 高度=600-m

在下面的代码中,我无法检测y轴为何超出最大值

x、 域在下面的代码中运行良好,但y.domain不能。然而,如果我给出我在下面评论过的静态值,我的线图工作得很好,但我想使它成为动态的

我的csv数据有3列

列名为dateforact

日期被解析为日期格式,而for和act列是数字

绘制两列图形的想法来自

目前我的图表是这样的。


var margin={顶部:20,右侧:20,底部:100,左侧:70},
宽度=1200-margin.left-margin.right,
高度=600-margin.top-margin.bottom;
var parseDate=d3.time.format(“%d-%b”).parse;
var x=d3.time.scale()
.范围([0,宽度]);
变量y=d3.scale.linear()
.范围([高度,0]);
var xAxis=d3.svg.axis()
.比例(x)
.orient(“底部”)
.蜱(13);
var yAxis=d3.svg.axis()
.比例(y)
.东方(“左”)
.蜱(7);
var line=d3.svg.line()
.插入(“基础”)
.x(函数(d){返回x(d.date);})
.y(函数(d){返回y(d.for);});
var line2=d3.svg.line()
.插入(“基础”)
.x(函数(d){返回x(d.date);})
.y(函数(d){returny(d.act);});
var svg=d3.选择(“正文”).追加(“svg”)
.attr(“宽度”,宽度+边距。左侧+边距。右侧)
.attr(“高度”,高度+边距。顶部+边距。底部)
.附加(“g”)
.attr(“转换”、“平移”(+margin.left+)、“+margin.top+”);
d3.csv(“for.csv”)函数(错误、数据){
data.forEach(函数(d){
d、 日期=解析日期(d.date);
d、 for=+d.for;
d、 act=+d.act;
});
x、 域(d3.extent(数据,函数(d){返回d.date;}));
y、 域([5000,d3.max(数据,函数(d){return Math.max(d.for,d.act);})];
/*y、 域名([500015000])*/
svg.append(“g”)
.attr(“类”、“x轴”)
.attr(“变换”、“平移(0)”、“高度+”)
.呼叫(xAxis);
svg.append(“g”)
.attr(“类”、“y轴”)
.呼叫(yAxis)
.append(“文本”)
.attr(“变换”、“旋转(-90)”)
.attr(“y”,6);
追加(“路径”)
.基准(数据)
.attr(“类”、“行”)
.attr(“笔划”、“红色”)
.attr(“d”,行);
追加(“路径”)
.基准(数据)
.attr(“类”、“行”)
.attr(“笔划”、“蓝色”)
.attr(“d”,第2行);
});

要计算两列的最大值,可以使用:

d3.max(data, function(d) {
    return d3.max([d.for, d.act])
})

15000是您期望的最大值吗?还可以尝试在函数(d)中添加一行,例如:函数(d){console.log(Math.max(d.for,d.act));这样您就知道您的函数实际在做什么。检查控制台的输出。15000只是一个随机数,值在10000-12000之间移动。感谢console.log的建议。下面是我发现的代码,它将column2 i与column3i进行比较,然后输出最大值,因此它循环并给出所有最大值的总数。
d3.max(data, function(d) {
    return d3.max([d.for, d.act])
})