D3js和基于百分比的变量
D3js and Variables Based on Percentages
我试图用D3js创建一个响应式散点图,使用百分比为图表的宽度和高度。
我在上面声明了这些变量:
var w = '100%';
var h = '100%';
我的xScale
和yScale
工作正常,随着我的输出圆圈在SVG中的位置:
var xScale = d3.scale.linear()
.domain([0, d3.max(data, function(d) { return d["ttc"]; })])
.range([0, w]);
var yScale = d3.scale.linear()
.domain([0, d3.max(data, function(d) { return d["ctc"]; })])
.range([0, h]);
var svg = d3.select(el)
.append('svg')
.attr('height', h)
.attr('width', w);
svg.selectAll('circle')
.data(data)
.enter()
.append('circle')
.attr('cx', function(d) { return xScale(d["ttc"]); })
.attr('cy', function(d) { return yScale(d["ctc"]); })
.attr('r', 10);
然而,由于svg的性质,圆圈是从左上角显示的,而不是左下角的典型原点。为了扭转这种情况,通常我会将yScale
range
值切换为[h, 0]
而不是[0, h]
。当我这样做时,我得到一个错误Error: Invalid value for <circle> attribute cy="NaN"
。我能做些什么来解决这个问题,并有百分比的情节工作?
您可以将宽度和高度声明为数字,如var h = 100;
,然后在attr
函数中添加百分比:
.attr('cx', function (d) {
return xScale(d["ttc"]) + '%';
})
那么你的svg可以样式为:
.attr('height', h + '%')
.attr('width', w + '%')
或者直接使用CSS。这是一个演示
相关文章:
- 将函数的上下文应用于javascript变量
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- 将PHP变量传递给jQuery时遇到问题
- 如何通过ajax刷新JSF填充的javascript变量
- 参数变量出现ngTable指令问题
- 通过javascript重定向html传递php变量
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 全局变量和全局对象的属性之间有什么区别吗
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 值对象在某个变量发生更改后发生更改
- Javascript变量赋值|
- AngularJS-在JSON选择器中使用变量名
- Javascript计数器变量未显示正确的值
- delete关键字在全局变量上的不同行为
- 如何在php变量中嵌入JQuery代码
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 如何在javascript中计算两个变量的百分比
- 来自 CSS ID 的百分比变量
- D3js和基于百分比的变量