> For the complete documentation index, see [llms.txt](https://huang-jason.gitbook.io/js-syntax/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://huang-jason.gitbook.io/js-syntax/d3-2.md).

# D3 - 2

## SVG

```markup
<svg width="400" height="60">
    <rect x="0" y="0" width="50" height="50" fill="green"></rect>

    <circle cx="90" cy="25" r="25" fill="red"></circle>

    <ellipse cx="145" cy="25" rx="15" ry="25" fill="grey"></ellipse>

    <line x1="185" y1="5" x2="230" y2="40" stroke="blue" stroke-width="5"></line>

    <text x="260" y="25" font-size="20px" fill="orange">Hello World</text>
</svg>


<svg width="190" height="160" xmlns="http://www.w3.org/2000/svg">
    <path d="M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80" stroke="black" fill="transparent"/>
</svg>
```

1. Everything outside svg.width & svg.height will be **hided**.
2. `<line>` color is controlled by stroke.

## Select

![](https://796576195-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lq83PzDCOblMUklyoLq%2F-Lq83TEbT5WF2flor5Gj%2F-Lq83VLeXuZ1Xx94lhtp%2Fselect.png?generation=1569962724047711\&alt=media)![](https://796576195-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lq83PzDCOblMUklyoLq%2F-Lq83TEbT5WF2flor5Gj%2F-Lq83VLgPOrx7GQ08RF7%2Fselect_2.png?generation=1569962723692911\&alt=media)

### Binding data

```javascript
var svg = d3.select("#chart-area").append("svg")
                    .attr("width", 500)
                    .attr("height", 500);

d3.json("data/buildings.json").then(data => {

    data.forEach( d => {
        d.height = +d.height;
    });

    var rects = svg.selectAll("rect")
            .data(data);

    rects.enter()
        .append("rect")
        .attr("x", (d, i) => (i * 50))
        .attr("y", 25)
        .attr("width", 25)
        .attr("height", d => d.height)
        .attr("fill", "red");
});
```

### Load data

```javascript
d3.csv("data/input.csv").then(x => { // csv, tsv, json
    console.log(x);
).catch(error => {
    console.log(error);
})
```

### Scale -> create scale func

1. `scaleLinear`
2. `scaleLog`
3. `scaleTime`
4. `scaleBand`

![](https://796576195-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lq83PzDCOblMUklyoLq%2F-Lq83TEbT5WF2flor5Gj%2F-Lq83VLqQwS1rXPIBWm0%2Fscale.png?generation=1569962723719269\&alt=media)![](https://796576195-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lq83PzDCOblMUklyoLq%2F-Lq83TEbT5WF2flor5Gj%2F-Lq83VLsbLjrEGP4yfFL%2FscaleTime.png?generation=1569962723912654\&alt=media)![](https://796576195-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lq83PzDCOblMUklyoLq%2F-Lq83TEbT5WF2flor5Gj%2F-Lq83VLulV-H87XWjmQQ%2FscaleOrdinal.png?generation=1569962723660559\&alt=media)

![](https://796576195-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lq83PzDCOblMUklyoLq%2F-Lq83TEbT5WF2flor5Gj%2F-Lq83VLwjCb5KDM-Fysx%2FscaleBand.png?generation=1569962723691319\&alt=media)

### min, max, extent

![](https://796576195-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lq83PzDCOblMUklyoLq%2F-Lq83TEbT5WF2flor5Gj%2F-Lq83VLyQVKDFtjLNNd1%2Fminmaxextent.png?generation=1569962723631067\&alt=media)

![](https://796576195-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lq83PzDCOblMUklyoLq%2F-Lq83TEbT5WF2flor5Gj%2F-Lq83VM-6YtovLT9WyjM%2Fminmaxextend2.png?generation=1569962723610466\&alt=media)

### Translation![](https://796576195-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lq83PzDCOblMUklyoLq%2F-Lq83TEbT5WF2flor5Gj%2F-Lq83VM1OCAYuOASL3kt%2Ftranslation.png?generation=1569962723777302\&alt=media)
