- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我试图利用这个伟大的例子 Force-Directed Graph对于一些非常简单的 json: https://raw.githubusercontent.com/DealPete/forceDirected/master/countries.json
我的工作在这里:codepen
我从 d3 收到永无休止的错误提要,一开始就没有错误,表明我的代码有问题。它是这样开始的:
XHR finished loading: GET "https://raw.githubusercontent.com/DealPete/forceDirected/master/countries.json".
[...]
d3.min.js:2 Uncaught Error: missing: 0
at ar (d3.min.js:2)
at r (d3.min.js:5)
at Function.e.links (d3.min.js:5)
at pen.js:46
at Object.<anonymous> (d3.min.js:7)
at d.call (d3.min.js:4)
at XMLHttpRequest.e (d3.min.js:7)
ar @ d3.min.js:2
r @ d3.min.js:5
e.links @ d3.min.js:5
(anonymous) @ pen.js:46
(anonymous) @ d3.min.js:7
call @ d3.min.js:4
e @ d3.min.js:7
d3.min.js:5 Uncaught TypeError: Cannot create property 'vx' on number '66'
at e (d3.min.js:5)
at d3.min.js:5
at Fe.each (d3.min.js:5)
at e (d3.min.js:5)
at n (d3.min.js:5)
at yn (d3.min.js:2)
at gn (d3.min.js:2)
e @ d3.min.js:5
(anonymous) @ d3.min.js:5
each @ d3.min.js:5
e @ d3.min.js:5
n @ d3.min.js:5
yn @ d3.min.js:2
gn @ d3.min.js:2
d3.min.js:5 Uncaught TypeError: Cannot create property 'vx' on number '66'
at e (d3.min.js:5)
at d3.min.js:5
at Fe.each (d3.min.js:5)
at e (d3.min.js:5)
at n (d3.min.js:5)
at yn (d3.min.js:2)
at gn (d3.min.js:2)
e @ d3.min.js:5
(anonymous) @ d3.min.js:5
each @ d3.min.js:5
e @ d3.min.js:5
n @ d3.min.js:5
yn @ d3.min.js:2
gn @ d3.min.js:2
我实际上找不到关于 d3 v4+ 中的力图的良好介绍性资源,所以我必须破解它。
<main>
<section class="d3">
</section>
</main>
const api = 'https://raw.githubusercontent.com/DealPete/forceDirected/master/countries.json'
let root = d3.select(".d3"),
width = +root.attr("width"),
height = +root.attr("height")
let svg = root.append('svg')
.attr("width", width)
.attr("height", height)
let color = d3.scaleOrdinal(d3.schemeCategory20);
let simulation = d3.forceSimulation()
.force("link", d3.forceLink().id((d) => d.country))
.force("charge", d3.forceManyBody())
.force("center", d3.forceCenter(width / 2, height / 2));
d3.json(api, function(error, graph) {
if (error)
throw error
let link = svg.append("g")
.attr("class", "links")
.selectAll("line")
.data(graph.links)
.enter().append("line")
.attr("stroke-width", () => 4);
let node = svg.append("g")
.attr("class", "nodes")
.selectAll("circle")
.data(graph.nodes)
.enter().append("circle")
.attr("r", 5)
.attr("fill", d => color(1))
.call(d3.drag()
.on("start", dragstarted)
.on("drag", dragged)
.on("end", dragended))
simulation
.nodes(graph.nodes)
.on("tick", ticked)
simulation.force("link")
.links(graph.links)
function ticked() {
link
.attr("x1", function(d) { return d.source.x; })
.attr("y1", function(d) { return d.source.y; })
.attr("x2", function(d) { return d.target.x; })
.attr("y2", function(d) { return d.target.y; });
node
.attr("cx", function(d) { return d.x; })
.attr("cy", function(d) { return d.y; });
}
})
function dragstarted(d) {
if (!d3.event.active) simulation.alphaTarget(0.3).restart();
d.fx = d.x;
d.fy = d.y;
}
function dragged(d) {
d.fx = d3.event.x;
d.fy = d3.event.y;
}
function dragended(d) {
if (!d3.event.active) simulation.alphaTarget(0);
d.fx = null;
d.fy = null;
}
最佳答案
看看您的links
数组:
[
{ "target": 66, "source": 0 },
{ "target": 3, "source": 1 },
{ "target": 100, "source": 2 },
...
]
现在看看您的 id
函数:
.id((d) => d.country)
如您所见,您的 links
数组中没有 country
。
因此,由于您对链接使用数字索引,因此只需删除id()
函数即可。根据API:
If id is specified, sets the node id accessor to the specified function and returns this force. If id is not specified, returns the current node id accessor, which defaults to the numeric node.index
这是您的工作代码:
const api = 'https://raw.githubusercontent.com/DealPete/forceDirected/master/countries.json'
var width = 500,
height = 500;
let svg = d3.select("body").append('svg')
.attr("width", width)
.attr("height", height)
let color = d3.scaleOrdinal(d3.schemeCategory20);
let simulation = d3.forceSimulation()
.force("link", d3.forceLink())
.force("charge", d3.forceManyBody())
.force("center", d3.forceCenter(width / 2, height / 2));
d3.json(api, function(error, graph) {
if (error)
throw error
let link = svg.append("g")
.attr("class", "links")
.selectAll("line")
.data(graph.links)
.enter().append("line")
.attr("stroke", "black")
.attr("stroke-width", 4);
let node = svg.append("g")
.attr("class", "nodes")
.selectAll("circle")
.data(graph.nodes)
.enter().append("circle")
.attr("r", 5)
.attr("fill", d => color(1))
.call(d3.drag()
.on("start", dragstarted)
.on("drag", dragged)
.on("end", dragended))
simulation
.nodes(graph.nodes)
.on("tick", ticked)
simulation.force("link")
.links(graph.links)
function ticked() {
link
.attr("x1", function(d) {
return d.source.x;
})
.attr("y1", function(d) {
return d.source.y;
})
.attr("x2", function(d) {
return d.target.x;
})
.attr("y2", function(d) {
return d.target.y;
});
node
.attr("cx", function(d) {
return d.x;
})
.attr("cy", function(d) {
return d.y;
});
}
})
function dragstarted(d) {
if (!d3.event.active) simulation.alphaTarget(0.3).restart();
d.fx = d.x;
d.fy = d.y;
}
function dragged(d) {
d.fx = d3.event.x;
d.fy = d3.event.y;
}
function dragended(d) {
if (!d3.event.active) simulation.alphaTarget(0);
d.fx = null;
d.fy = null;
}
<script src="https://d3js.org/d3.v4.min.js"></script>
关于json - d3 - "Cannot create property ' vx' 在号码 '65' 上”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43760235/
有谁知道发行者脚本处理流程应该如何在 VeriFone 密码键盘上工作?据我了解,卡处理器在 9f18 标签中发回脚本。标有 71 标签的脚本将在第二次生成 AC 之前处理,标有 72 标签的脚本将在
我已经为RPG Maker XV ace制作了一部电影,背景音乐也很简单。 该程序仅允许播放.ogv电影(OGG,THEORA)。我的视频质量没有问题,但是声音失真并且“跳跃” (例如我们在90年代演
我正在尝试按照 https://dribbble.com/shots/2673159-Funnel-UI-concept/attachments/538068 的思路构建一些东西 我查看了 d3/vx
我正在尝试检查包含正确格式版本号的输入字符串。 vX.X.X 其中 X 可以是任意数量的数字,例如: v1.32.12 or v0.2.2 or v1232.321.23 我有以下正则表达式
我正在尝试在 Verifone VX 520 屏幕上显示位图图像。 我尝试使用 put_BMP()函数,但它返回 -1并且图像不显示。图像是单色和 128x128 像素。这是代码: int main(
我正在使用 Tasking VX 工具集(建立在 Eclipse 上)并且有一个相当基本但基本的问题我无法解决......我已经 RTFMed 但仍然完全不聪明。 想象一下简单的代码片段: #incl
所以我试图利用这个伟大的例子 Force-Directed Graph对于一些非常简单的 json: https://raw.githubusercontent.com/DealPete/forceD
目前,我正在尝试制作一个家谱 配偶/伴侣(多个) 配偶/伴侣的子女 我想在 React.js 中完成这项工作,我正在使用 VX 根据 D3 树结构,一个 child 只能有一个 parent ,因此为
Docker Hub 搭建 Syncthing image为我来自 this source repo . 我标记了 latest commit v0.13.5,但 Docker 构建了两次:once
我一直在关注a tutorial但不断收到以下错误 AttributeError:蠕虫实例没有属性“move” 我不确定这到底意味着什么或如何解决它。该错误指向底部的第 44 行,该行是 w.move
React VX 图表。我已经安装了所有必需的软件包。来自 VX 站点的代码:https://github.com/hshoff/vx import React from 'react'; impor
当我还为详细模式设置详细时,我正在尝试配置 PS4 以获得更好的 xtrace 输出。我想做的一些事情会生成子 shell,但我希望看到这些操作的任何 -x 或 -v 输出,因为它们会为每一行打印。
我正在试用 Go 模块。我的项目需要库 golang.org/x/net/html,所以我定义了这个 go.mod 文件: module github.com/patrickbucher/pretty
我正在尝试安装 gtsam并且遇到了一些问题。 我将 boost 安装到 c:/program files/boost/boost_1_56_0 并将以下内容添加到我的 CMakeLists.text
我是一名优秀的程序员,十分优秀!