前面有提到Observablehq
,但有些特別的語法需要先了解,所以直接使用Codepen,並引入D3 v6.1.1。
畫圓形可以使用SVG元件中的circle
並使用cx
, cy
, r
等屬性來控制那個圓。
預期的輸出樣子如下。
// html
<circle
cx="50"
cy="50"
r="10"
>
</circle>
// html
<svg></svg>
// javascript
const svg = d3.select('svg');
語法類似jQuery選取DOM的方式,select
後接的就是document.querySelector
後的選取器格式,d3 select,其實也就是用這方法,詳見原始碼。
// javascript
const svg = d3.select('svg');
svg.append('circle')
.attr('cx', 50)
.attr('cy', 50)
.attr('r', 10);
感覺與jQuery寫法類似,鏈狀使用,透過append
的方式,可以在此Selection
的物件中掛上我們需要的元件。
透過d3.select
選取的元素,會在select
函式中包裝成Selection
這一物件,就可調用各種d3 Selection
的API
透過此Selection
中的attr
API,可以將該元件增加屬性,不論svg元件或其他DOM都行!
基本D3畫圖非常簡單,不只用append的方式新增元件,還可以用d3.create
的方式建立元件,但需考慮到namespace
的小問題,覺得比較麻煩一點,暫時不用。
以下是關於d3.create
的問題以及解答。
https://stackoverflow.com/questions/63966402/d3-js-use-d3-create-element-cant-show-in-svg-tag/63966461#63966461