2021-06-15 00:49:18 -07:00
---
id: 587d7fac367417b2b2512bdb
2021-07-03 20:07:10 +05:30
title: Impostare un dominio e un intervallo su una scala
2021-06-15 00:49:18 -07:00
challengeType: 6
forumTopicId: 301491
dashedName: set-a-domain-and-a-range-on-a-scale
---
# --description--
2021-07-03 20:07:10 +05:30
Per impostazione predefinita, le scale usano la relazione identità. Questo significa che il valore in ingresso viene mappato al valore in uscita. Tuttavia, le scale possono essere molto più flessibili e interessanti.
2021-06-15 00:49:18 -07:00
2021-07-03 20:07:10 +05:30
Diciamo che un set di dati ha valori che vanno da 50 a 480. Queste sono le informazioni di input per una scala, noto anche come il < dfn > dominio< / dfn > .
2021-06-15 00:49:18 -07:00
2021-07-03 20:07:10 +05:30
Si desidera mappare quei punti lungo l'asse `x` sulla tela SVG, tra 10 unità e 500 unità. Queste sono le informazioni di output, note anche come < dfn > l'intervallo</ dfn > .
2021-06-15 00:49:18 -07:00
2021-07-03 20:07:10 +05:30
I metodi `domain()` e `range()` impostano questi valori per la scala. Entrambi i metodi prendono un array di almeno due elementi come argomento. Ecco un esempio:
2021-06-15 00:49:18 -07:00
```js
scale.domain([50, 480]);
scale.range([10, 500]);
scale(50)
scale(480)
scale(325)
scale(750)
d3.scaleLinear()
```
2021-07-03 20:07:10 +05:30
In ordine, i seguenti valori saranno visualizzati nella console: `10` , `500` , `323.37` , e `807.67` .
2021-06-15 00:49:18 -07:00
2021-07-03 20:07:10 +05:30
Si noti che la scala utilizza la relazione lineare tra i valori del dominio e dell'intervallo per capire quale dovrebbe essere l'output per un dato numero. Il valore minimo nel dominio (50) mappa al valore minimo (10) nell'intervallo.
2021-06-15 00:49:18 -07:00
# --instructions--
2021-07-03 20:07:10 +05:30
Crea una scala e imposta il suo dominio a `[250, 500]` e intervallo a `[10, 150]` .
2021-06-15 00:49:18 -07:00
2021-07-03 20:07:10 +05:30
**Nota:** Puoi concatenare i metodi `domain()` e `range()` sulla variabile `scale` .
2021-06-15 00:49:18 -07:00
# --hints--
2021-07-03 20:07:10 +05:30
Il tuo codice dovrebbe usare il metodo `domain()` .
2021-06-15 00:49:18 -07:00
```js
assert(code.match(/\.domain/g));
```
2021-07-03 20:07:10 +05:30
Il `domain()` della scala `scale` dovrebbe essere impostato a `[250, 500]` .
2021-06-15 00:49:18 -07:00
```js
assert(JSON.stringify(scale.domain()) == JSON.stringify([250, 500]));
```
2021-07-03 20:07:10 +05:30
Il tuo codice dovrebbe usare il metodo `range()` .
2021-06-15 00:49:18 -07:00
```js
assert(code.match(/\.range/g));
```
2021-07-03 20:07:10 +05:30
L'intervallo `range()` della `scale` dovrebbe essere impostato a `[10, 150]` .
2021-06-15 00:49:18 -07:00
```js
assert(JSON.stringify(scale.range()) == JSON.stringify([10, 150]));
```
2021-07-03 20:07:10 +05:30
Il testo nell'`h2` dovrebbe essere `-102` .
2021-06-15 00:49:18 -07:00
```js
assert($('h2').text() == '-102');
```
# --seed--
## --seed-contents--
```html
< body >
< script >
// Add your code below this line
const scale = d3.scaleLinear();
// Add your code above this line
const output = scale(50);
d3.select("body")
.append("h2")
.text(output);
< / script >
< / body >
```
# --solutions--
```html
< body >
< script >
const scale = d3.scaleLinear();
scale.domain([250, 500])
scale.range([10, 150])
const output = scale(50);
d3.select("body")
.append("h2")
.text(output);
< / script >
< / body >
```