gpt4 book ai didi

r - 使用 r2d3 在 d3.js 中使用 R data.frame 对象

转载 作者:行者123 更新时间:2023-12-04 12:20:56 25 4
gpt4 key购买 nike

我试图了解如何使用包 r2d3 将 R 数据帧传递给 d3.js 脚本。 . r2d3的扩展用于访问 data.frame 中的变量的条形图示例对象会有所帮助。

代码:

library(r2d3)
data <- data.frame(nums = c(0.3, 0.6, 0.8, 0.95, 0.40, 0.20))
r2d3(data, script = "test.js")

js代码:
var barHeight = Math.floor(height / data.length);

svg.selectAll('rect')
.data(data.nums)
.enter().append('rect')
.attr('width', function(d) { return d * width; })
.attr('height', barHeight)
.attr('y', function(d, i) { return i * barHeight; })
.attr('fill', 'steelblue');

错误:
Error: svg.selectAll(...).data(...).enter is not a function in (test.js#5:4)
TypeError: svg.selectAll(...).data(...).enter is not a function

最佳答案

发生此错误的原因是 data.nums未定义。

您的 data变量不是包含数组的对象,如下所示:

var data = {
nums: [0.3,0.6,0.8,0.95,0.40,0.20]
}

但是,而是一个包含对象的数组:
var data = [
{nums:0.3},
{nums:0.6},
{nums:0.8},
{nums:0.95},
{nums:0.40},
{nums:0.2}
]

留住你 r侧代码,我们只需要将数据数组本身传递给 selection.data()并访问 nums每个数据的属性:
var barHeight = Math.floor(height / data.length);

svg.selectAll('rect')
.data(data)
.enter().append('rect')
.attr('width', function(d) { return d.nums * width; })
.attr('height', barHeight)
.attr('y', function(d, i) { return i * barHeight; })
.attr('fill', 'steelblue');

关于r - 使用 r2d3 在 d3.js 中使用 R data.frame 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55168105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com