私は力の有向グラフを視覚化するためにd3
で作業しています。node.jsでd3ライブラリを正しくインポートするには?
cdnファイルを使用してプロジェクトを開始しました。 d3.forceSimulation()
よう
..functionsが、少なくともそれがエラーをスローし、使用できません。しかし、私はこのコードを使用する場合、一つの問題を発見しました。この例Force-Directed Graph
によると...
しかし、新たな問題が出てきた::だから私はこの1つのURLを変更しUncaught TypeError: Cannot read property 'append' of null
、svg
を意味します。
npm
を使用してd3
をインストールしようとしました。だから私はd3
インポート:
import * as d3 from 'd3'
しかし、私はdiv
にSVGを追加する方法を得ることができないエラーが発生したときにこれが私のコードです:
グラフィック/ index.js
// import modules
import * as d3 from 'd3'
// export function
const force_graph = (w, h) => {
let svg = d3.select('#Gforce')
.append('svg')
.attr({
'width': w,
'height': h,
'cursor': 'default'
})
let circle = svg.append('circle')
.attr({
'cx': 325,
'cy': 270,
'r': 10,
'fill': '#7A6464',
'class': 'dot'
})
}
module.exports = force_graph
のindex.js
const graph = require('./graphic')
let w = document.getElementById('Gforce').offsetWidth
let h = document.getElementById('Gforce').offsetHeight
graph(w, h)
にはどうすればきちんとD3ライブラリをインポートすることができます。私はこれらのオプションを試しましたが、結果は得られません。私は間違って何をしていますか?
EDIT 1
私はhtml
からすべてのD3スクリプトを削除しました。私も試してみました
const d3 = require('d3')
const d3SelectionMulti = require('d3-selection-multi')
::私は、ドキュメントによると.attrs
代わり.attr
を使用
import * as d3 from 'd3'
import 'd3-selection-multi'
:これはスロー誤りがあるd3-selection-multi v1.0.1
は、私は私のすなわちファイルでこれを追加しましたそれらの変更後:
Uncaught TypeError: d3.select(...).append(...).attrs is not a function
プラグインを使用して、1つの '.attr({})'呼び出しで属性を割り当てることができますか?あなたがそれをした後に 'svg'がヌルならば、それは問題に関連している可能性があります。 'let circle = ...'を開始する行の前に、コンソールログ 'svg'(それはおそらく未定義です)を試してください。 '.attr({...})'行をコメントアウトすると、まだ定義されていませんか? – anbnyc
@anbnycプラグインを使用していません。私が 'attr({...})にコメントすると、svgは今定義されています..あなたは私に何のプラグインをお勧めしますか?ありがとう –