118 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			118 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								id: 587d7fad367417b2b2512bdf
							 | 
						||
| 
								 | 
							
								title: Add Axes to a Visualization
							 | 
						||
| 
								 | 
							
								challengeType: 6
							 | 
						||
| 
								 | 
							
								videoUrl: ''
							 | 
						||
| 
								 | 
							
								localeTitle: ''
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Description
							 | 
						||
| 
								 | 
							
								undefined
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Instructions
							 | 
						||
| 
								 | 
							
								undefined
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Tests
							 | 
						||
| 
								 | 
							
								<section id='tests'>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```yml
							 | 
						||
| 
								 | 
							
								tests:
							 | 
						||
| 
								 | 
							
								  - text: ''
							 | 
						||
| 
								 | 
							
								    testString: 'assert(code.match(/\.axisLeft\(yScale\)/g), "Your code should use the <code>axisLeft()</code> method with <code>yScale</code> passed as the argument.");'
							 | 
						||
| 
								 | 
							
								  - text: ''
							 | 
						||
| 
								 | 
							
								    testString: 'assert($("g").eq(1).attr("transform").match(/translate\(60\s*?,\s*?0\)/g), "The y-axis <code>g</code> element should have a <code>transform</code> attribute to translate the axis by (60, 0).");'
							 | 
						||
| 
								 | 
							
								  - text: ''
							 | 
						||
| 
								 | 
							
								    testString: 'assert(code.match(/\.call\(yAxis\)/g), "Your code should call the <code>yAxis</code>.");'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</section>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Challenge Seed
							 | 
						||
| 
								 | 
							
								<section id='challengeSeed'>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<div id='html-seed'>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```html
							 | 
						||
| 
								 | 
							
								<body>
							 | 
						||
| 
								 | 
							
								  <script>
							 | 
						||
| 
								 | 
							
								    const dataset = [
							 | 
						||
| 
								 | 
							
								                  [ 34,     78 ],
							 | 
						||
| 
								 | 
							
								                  [ 109,   280 ],
							 | 
						||
| 
								 | 
							
								                  [ 310,   120 ],
							 | 
						||
| 
								 | 
							
								                  [ 79,   411 ],
							 | 
						||
| 
								 | 
							
								                  [ 420,   220 ],
							 | 
						||
| 
								 | 
							
								                  [ 233,   145 ],
							 | 
						||
| 
								 | 
							
								                  [ 333,   96 ],
							 | 
						||
| 
								 | 
							
								                  [ 222,    333 ],
							 | 
						||
| 
								 | 
							
								                  [ 78,    320 ],
							 | 
						||
| 
								 | 
							
								                  [ 21,   123 ]
							 | 
						||
| 
								 | 
							
								                ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const w = 500;
							 | 
						||
| 
								 | 
							
								    const h = 500;
							 | 
						||
| 
								 | 
							
								    const padding = 60;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const xScale = d3.scaleLinear()
							 | 
						||
| 
								 | 
							
								                     .domain([0, d3.max(dataset, (d) => d[0])])
							 | 
						||
| 
								 | 
							
								                     .range([padding, w - padding]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const yScale = d3.scaleLinear()
							 | 
						||
| 
								 | 
							
								                     .domain([0, d3.max(dataset, (d) => d[1])])
							 | 
						||
| 
								 | 
							
								                     .range([h - padding, padding]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const svg = d3.select("body")
							 | 
						||
| 
								 | 
							
								                  .append("svg")
							 | 
						||
| 
								 | 
							
								                  .attr("width", w)
							 | 
						||
| 
								 | 
							
								                  .attr("height", h);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    svg.selectAll("circle")
							 | 
						||
| 
								 | 
							
								       .data(dataset)
							 | 
						||
| 
								 | 
							
								       .enter()
							 | 
						||
| 
								 | 
							
								       .append("circle")
							 | 
						||
| 
								 | 
							
								       .attr("cx", (d) => xScale(d[0]))
							 | 
						||
| 
								 | 
							
								       .attr("cy",(d) => yScale(d[1]))
							 | 
						||
| 
								 | 
							
								       .attr("r", (d) => 5);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    svg.selectAll("text")
							 | 
						||
| 
								 | 
							
								       .data(dataset)
							 | 
						||
| 
								 | 
							
								       .enter()
							 | 
						||
| 
								 | 
							
								       .append("text")
							 | 
						||
| 
								 | 
							
								       .text((d) =>  (d[0] + "," + d[1]))
							 | 
						||
| 
								 | 
							
								       .attr("x", (d) => xScale(d[0] + 10))
							 | 
						||
| 
								 | 
							
								       .attr("y", (d) => yScale(d[1]))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const xAxis = d3.axisBottom(xScale);
							 | 
						||
| 
								 | 
							
								    // Add your code below this line
							 | 
						||
| 
								 | 
							
								    const yAxis = undefined;
							 | 
						||
| 
								 | 
							
								    // Add your code above this line
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    svg.append("g")
							 | 
						||
| 
								 | 
							
								       .attr("transform", "translate(0," + (h - padding) + ")")
							 | 
						||
| 
								 | 
							
								       .call(xAxis);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Add your code below this line
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Add your code above this line
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  </script>
							 | 
						||
| 
								 | 
							
								</body>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</section>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Solution
							 | 
						||
| 
								 | 
							
								<section id='solution'>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								// solution required
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								</section>
							 |