| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | --- | 
					
						
							|  |  |  | id: 587d7fab367417b2b2512bd7 | 
					
						
							| 
									
										
										
										
											2021-03-09 08:51:59 -07:00
										 |  |  | title: 使用 SVG Circles 创建散点图 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | challengeType: 6 | 
					
						
							| 
									
										
										
										
											2020-09-18 00:13:05 +08:00
										 |  |  | forumTopicId: 301484 | 
					
						
							| 
									
										
										
										
											2021-01-13 03:31:00 +01:00
										 |  |  | dashedName: create-a-scatterplot-with-svg-circles | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | --- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | # --description--
 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 08:51:59 -07:00
										 |  |  | 散点图是另一种形式的可视化。 它用圆圈来映射数据点,每个数据点有两个值。 这两个值和 `x` 和 `y` 轴相关联,在可视化中用来给圆圈定位。 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 08:51:59 -07:00
										 |  |  | SVG 用 `circle` 标签来创建圆形。 它和之前用来构建条形图的 `rect` 非常相像。 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | # --instructions--
 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 08:51:59 -07:00
										 |  |  | 使用 `data()`、`enter()`、`append()` 方法将 `dataset` 和新添加到 SVG 画布上的 `circle` 元素绑定起来。 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 08:51:59 -07:00
										 |  |  | **注意:** 圆形并不可见,因为我们还没有设置它们的属性。 我们会在下一个挑战中设置属性。 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | # --hints--
 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-09 08:51:59 -07:00
										 |  |  | 应该有 10 个 `circle` 元素。 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert($('circle').length == 10); | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-13 03:31:00 +01:00
										 |  |  | # --seed--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## --seed-contents--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```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 svg = d3.select("body") | 
					
						
							|  |  |  |                   .append("svg") | 
					
						
							|  |  |  |                   .attr("width", w) | 
					
						
							|  |  |  |                   .attr("height", h); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     svg.selectAll("circle") | 
					
						
							|  |  |  |        // Add your code below this line | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |        // Add your code above this line | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   </script> | 
					
						
							|  |  |  | </body> | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | # --solutions--
 | 
					
						
							| 
									
										
										
										
											2020-08-13 17:24:35 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-13 03:31:00 +01:00
										 |  |  | ```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 svg = d3.select("body") | 
					
						
							|  |  |  |                   .append("svg") | 
					
						
							|  |  |  |                   .attr("width", w) | 
					
						
							|  |  |  |                   .attr("height", h); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     svg.selectAll("circle") | 
					
						
							|  |  |  |        .data(dataset) | 
					
						
							|  |  |  |        .enter() | 
					
						
							|  |  |  |        .append("circle") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   </script> | 
					
						
							|  |  |  | </body> | 
					
						
							|  |  |  | ``` |