Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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 无法读取d3js中长度的属性_Javascript_D3.js - Fatal编程技术网

Javascript 无法读取d3js中长度的属性

Javascript 无法读取d3js中长度的属性,javascript,d3.js,Javascript,D3.js,在尝试从JSON文件获取数据并将其插入另一个函数时,如何避免以下错误 rateChart = function(config, el) { config.barColor = '#0070D2'; config.barHeight = 20; config.margin = {} } 这是我的密码: var margin={顶部:20,右侧:20,底部:50,左侧:70}, 宽度=960-margin.left-margin.right, 高度=50

在尝试从JSON文件获取数据并将其插入另一个函数时,如何避免以下错误

rateChart = function(config, el) {
config.barColor = '#0070D2';
          config.barHeight = 20;
          config.margin = {}
}
这是我的密码:


var margin={顶部:20,右侧:20,底部:50,左侧:70},
宽度=960-margin.left-margin.right,
高度=500-margin.top-margin.bottom;
(功能(){
控制台日志(“QWERRR”);
json(“data.php”,函数(错误,数据){
如果(错误)抛出错误;
控制台日志(“QWERRR”);
控制台日志(数据);
data.forEach(函数(d){
d、 标签=d.标签;
d、 比率=+d.比率;
d、 计数=+d.count;
});
速率图=功能(配置,el){
config.barColor='#0070D2';
config.barHeight=20;
config.margin={
前20名,
右:20,,
底数:50,
左:70
};
config.width=960-margin.left-margin.right,
配置高度=500-margin.top-margin.bottom;
var x=d3.scale.ordinal().domain([0,2])
.rangeRoundBands([0,配置宽度]);
var chartContainer=d3.选择(el)
.append('svg')
.attr('width',config.width+config.margin.left+config.margin.right)
.attr('height',config.height+config.margin.top+config.margin.bottom)
var chart=chartContainer
.append('g')
.attr(“转换”、“转换”(+config.margin.left+)、“+config.margin.top+”);
var rateRectsGroup=chart.selectAll('g.rates'))
.data(config.data).enter()
.append('g')
.attr('类别','费率')
.attr(“转换”,函数(d,i){
var xPos,
yPos=((config.barHeight*i)*2);
xPos=0;
返回“translate”(“+xPos+”,“+yPos+”);
});
var rateRectsFull=rateRectsGroup.append('rect')
.attr('height',config.barHeight)
.attr('width',config.width)
.attr('class','compare bar')
.attr('fill','F4F6F9')
.attr(“转换”,“转换(0,0)”);
var rateRects=rateRectsGroup.append('rect')
.attr('height',config.barHeight)
.attr('width',函数(d){
返回值(配置宽度*d.rate)
})
.style('fill',config.barColor)
.attr(“转换”,函数(d){
返回'translate(+(config.width-(config.width*d.rate))/2+',0';
});
var rateRectsLabel=rateRectsGroup.append('text')
.attr('text-anchor','middle')
.attr('class','category value')
.attr('transform','translate('+config.width/2+',0'))
.append('tspan')
.attr('dy','1em')
.文本(功能(d){
返回d.count;
});
var categoryLabels=chartContainer.append('g')
.selectAll('text.bar text')
.data(config.data).enter()
.append('文本')
.attr('class','bar text')
.attr('text-anchor','end')
.attr(“转换”,函数(d,i){
var xPos=config.margin.left+1,
yPos=((config.barHeight*i+10)*2);
返回“translate”(“+xPos+”,“+yPos+”);
})
.append('tspan')
.attr('dy','1.3em'))
.文本(功能(d){
返回d.标签
});
}
费率表(数据“费率表”);
});
}());
。费率表。中间线{
笔画:黑色;
笔画宽度:2px;
}
.费率表.目标{
笔画:黑色;
笔画宽度:1px;
}
.费率表.目标文本{
填充:#666;
字体系列:无衬线;
字体大小:11px;
字体大小:粗体;
}
.费率表.费率值{
填充物:白色;
字体大小:11px;
字体大小:粗体;
字体系列:无衬线;
}
.费率表.费率值容器{
填充:rgba(0,0,0,25);
}
.费率表.费率标签{
填充:黑色;
字体大小:11px;
字体系列:无衬线;
字体大小:粗体;
}
.费率表.条形文本{
字体系列:无衬线;
字体大小:11px;
字体大小:粗体;
文本转换:大写;
填充:黑色;
}
.类别价值{
字体大小:粗体;
文本转换:大写;
填充:黑色;
}
数据

d3.json("data.php", function(error, data) {
    if (error) throw error;
    console.log("qwerrrr");
    console.log(data);
    data.forEach(function(d) {
      d.label = d.label;
      d.rate = +d.rate;
      d.count=+d.count;
    });
所以

你的职能

rateChart = function(config, el) {
config.barColor = '#0070D2';
          config.barHeight = 20;
          config.margin = {}
}
基本数据==config它不是一个你不能做的对象config.xxx

什么是config.data

试试这个

rateChart(data,{}, '.rate-chart');

rateChart = function(data,config, el) {
config.data = data
....
}

我看不到你的代码中有任何地方使用了
长度
。我也不知道为什么会出现这个错误,我猜它没有得到json的长度可能是多少?我不确定。谢谢,这一个有效,我还有一个疑问,每个条的长度随从json传递的速率值而变化,它可以动态地改变条的长度而不是传递json,在d3js中是否可能?不要一次问所有问题,请制作一个新的并添加axample工作代码,这样我们才能更好地理解你的问题