D3力導向圖使用總結

1、simulation各項參數簡單介紹javascript

this.simulation = d3
.forceSimulation()
.alphaDecay(0.03) //設置 alpha 衰減率.迭代150,默認0.0228
.alphaMin(0.005) //須要在 [0, 1] 之間。若是沒有指定 min 則返回當前的最小 alpha 值,默認爲 0.001. 在仿真內部,會不斷的減少 alpha 值直到 alpha 值小於 最小 alpha。
.velocityDecay(0.2) //默認爲 0.4,較低的衰減係數可使得迭代次數更多,其佈局結果也會更理性,可是可能會引發數值不穩定從而致使震盪。
.force("link",d3.forceLink() //link froce(彈簧模型) 能夠根據 link distance 將有關聯的兩個節點拉近或者推遠。力的強度與被連接兩個節點的距離成比例,相似彈簧力。
.id(d => d.pk) //設置或獲取link中節點的查找方式 
.distance(radius * 5) //設置或獲取兩個節點之間的距離)// 
.force('charge', d3.forceManyBody())
.force("charge",d3.forceManyBody().strength(-250) //做用力應用在所用的節點之間,當strength爲正的時候能夠模擬重力,當爲負的時候能夠模擬電荷力。
.theta(0.9) //默認爲 0.9.
.distanceMin(80) //設置或獲取最小鏈接距離 
.distanceMax(400) //設置或獲取最大鏈接距離)
.force("center", d3.forceCenter(this.width / 2, this.height / 2)) //centering做用力可使得節點佈局開以後圍繞某個中心。
.force("collision",d3.forceCollide(radius + 4) //設置節點碰撞半徑>= 點半徑避免重疊
.strength(0.9) //則將碰撞強度設置爲指定的數值,強度範圍爲 [0, 1]。並返回當前碰撞力模型,默認0.7
.iterations(1) // iterations 則將每次應用碰撞檢測力模型時候的迭代次數設置爲指定的數值。若是沒有指定 iterations 則返回當前的迭代次數,默認爲 1。迭代次數越大,最終的佈局越優,可是會增長程序運行上的消耗。)
.on("end", () => {this.lastTock();});複製代碼

//在d3力導向圖的拖放事件裏,常會用到alphaTarget屬性
拖放開始時,alphaTarget設置爲比alphaMin更大的值,即會在拖放的過程當中力導向圖持續運算(防止拖到一半結束的狀況)
。
拖放結束時,alphaTarget設置爲0,即在拖放結束後的一段時間內,力導向圖中止運算。複製代碼

2、怎樣修改已經設置好的simulationjava

simulation
  .force("A", null)
  .force("B", null);複製代碼

3、simulation的tick有"start"/"end"/"on"三種觸發事件,開發的時候卻常常被忽略bash

相關文章
相關標籤/搜索