1 00:00:00,000 --> 00:00:00,780 2 00:00:00,780 --> 00:00:11,880 >> [Musik spiller] 3 00:00:11,880 --> 00:00:16,480 >> DAVID Chouinard: Jeg er David Chouinard, og det er D3. 4 00:00:16,480 --> 00:00:17,700 Velkommen. 5 00:00:17,700 --> 00:00:21,270 Vi kommer til at lære om D3 i dag. 6 00:00:21,270 --> 00:00:25,020 D3 er en JavaScript rammer til opbygning af en høj kvalitet 7 00:00:25,020 --> 00:00:28,110 interaktive visualiseringer til internettet. 8 00:00:28,110 --> 00:00:30,870 Ting som det, vi er seeing i ryggen af ​​mig, 9 00:00:30,870 --> 00:00:34,230 vi vil lære at lave dem, ting, slags det grundlæggende i det. 10 00:00:34,230 --> 00:00:36,452 Men det vil være cool. 11 00:00:36,452 --> 00:00:38,160 Lad os komme i gang gøre smukke billeder. 12 00:00:38,160 --> 00:00:41,108 13 00:00:41,108 --> 00:00:44,350 Vi har fået flere demoer af udsigterne til rådighed. 14 00:00:44,350 --> 00:00:48,040 15 00:00:48,040 --> 00:00:50,760 Lad os gøre det. 16 00:00:50,760 --> 00:00:58,700 >> Act I, DOM manipulation-- vi vil til at starte med det samme at gøre seje ting. 17 00:00:58,700 --> 00:01:01,240 Først og fremmest til venstre, har vi kode. 18 00:01:01,240 --> 00:01:03,470 Til højre har vi resultatet af vores kode. 19 00:01:03,470 --> 00:01:04,900 Lad os gå igennem det. 20 00:01:04,900 --> 00:01:05,780 >> Lad os lave en cirkel. 21 00:01:05,780 --> 00:01:08,570 Hvordan lyder det? 22 00:01:08,570 --> 00:01:14,934 svg.append circle-- Vi har lige lavet en cirkel. 23 00:01:14,934 --> 00:01:16,100 Du behøver ikke tro mig, ikke? 24 00:01:16,100 --> 00:01:18,190 Det er der ikke. 25 00:01:18,190 --> 00:01:21,830 >> Så hvad vi gjorde her er, SVG er skalerbar vektorgrafik. 26 00:01:21,830 --> 00:01:27,530 Det er den måde, vi fortæller browseren til gøre vektorgrafik i browseren. 27 00:01:27,530 --> 00:01:30,740 Hvad vi lige gjorde lige nu tilsættes en cirkel for at gennemse. 28 00:01:30,740 --> 00:01:34,790 >> Løftet er, at cirklen kræver lidt grundlæggende egenskaber 29 00:01:34,790 --> 00:01:36,850 før vi rent faktisk kan se det. 30 00:01:36,850 --> 00:01:40,045 Vi har brug for at fortælle det sin X-position, dens y position, dets radius. 31 00:01:40,045 --> 00:01:43,310 Vi ikke fortælle det noget af det, så vi ikke ser det lige nu. 32 00:01:43,310 --> 00:01:46,210 Men lad os sige det stuff. 33 00:01:46,210 --> 00:01:49,510 >> Så først og fremmest, du har fået at give vores kreds et navn. 34 00:01:49,510 --> 00:01:53,070 Så lad os kalde det cirkel. 35 00:01:53,070 --> 00:01:54,406 Vores cirkel har et navn nu. 36 00:01:54,406 --> 00:01:57,230 37 00:01:57,230 --> 00:01:59,490 Og lad os give det et par attributter. 38 00:01:59,490 --> 00:02:03,690 Hvad med cx ville centrere x, så midten af ​​X-positionen. 39 00:02:03,690 --> 00:02:06,730 Lad os sige, 200 for 200 pixels. 40 00:02:06,730 --> 00:02:10,220 >> Lad os give det en y på 200 pixels samt. 41 00:02:10,220 --> 00:02:16,032 Og en R, en radius på omkring 40 pixels. 42 00:02:16,032 --> 00:02:16,950 Lad os nu se. 43 00:02:16,950 --> 00:02:21,740 44 00:02:21,740 --> 00:02:23,440 Jeg kan ikke stave. 45 00:02:23,440 --> 00:02:30,430 46 00:02:30,430 --> 00:02:31,520 >> Der du går. 47 00:02:31,520 --> 00:02:37,330 Vi har en cirkel ved position 200 pixels, 200 pixels, radius af 40 pixels. 48 00:02:37,330 --> 00:02:38,280 Slags cool, ikke? 49 00:02:38,280 --> 00:02:38,988 Vi har en cirkel. 50 00:02:38,988 --> 00:02:40,880 Ja. 51 00:02:40,880 --> 00:02:42,670 >> Så ingen grund til at følge med. 52 00:02:42,670 --> 00:02:45,790 Alle disse eksempler, alle koden jeg gør i dag 53 00:02:45,790 --> 00:02:51,300 vil blive ydet online i slutningen i form af interaktive eksempler 54 00:02:51,300 --> 00:02:54,010 med checkpoints på enhver handling, og så videre. 55 00:02:54,010 --> 00:02:55,160 >> Lad os gøre flere ting. 56 00:02:55,160 --> 00:02:58,901 Denne sorte cirkel er virkelig grimme. 57 00:02:58,901 --> 00:03:01,541 Jeg er ked af, at fejl meddelelser lige der. 58 00:03:01,541 --> 00:03:05,340 Der vi går. 59 00:03:05,340 --> 00:03:06,350 >> Lad os give det en farve. 60 00:03:06,350 --> 00:03:07,170 Hvordan er det? 61 00:03:07,170 --> 00:03:08,340 Jeg kan lide at stålblå. 62 00:03:08,340 --> 00:03:13,280 63 00:03:13,280 --> 00:03:16,030 Nå, vores kreds skiftede farve. 64 00:03:16,030 --> 00:03:17,320 Det er godt. 65 00:03:17,320 --> 00:03:31,330 Lad os gøre det halvgennemsigtige too-- halvgennemsigtig. 66 00:03:31,330 --> 00:03:33,670 >> Så dette er egenskaber vi definerer på cirklen. 67 00:03:33,670 --> 00:03:36,774 Det første, vi gjorde, er vi sætter en cirkel på siden. 68 00:03:36,774 --> 00:03:38,690 Og så er vi definere en flok af attributter. 69 00:03:38,690 --> 00:03:41,610 Nogle af disse er påkrævet, Ligesom CX, CY, og Radius. 70 00:03:41,610 --> 00:03:42,680 Og andre er valgfri. 71 00:03:42,680 --> 00:03:44,730 >> Der er mange flere egenskaber. 72 00:03:44,730 --> 00:03:46,760 Der er en masse af dem. 73 00:03:46,760 --> 00:03:53,070 For eksempel kunne vi have en slagtilfælde samt, et slagtilfælde rød. 74 00:03:53,070 --> 00:03:55,630 Men lad os fjerne det. 75 00:03:55,630 --> 00:04:00,450 Vi er tilbage til en cirkel, en blå cirkel. 76 00:04:00,450 --> 00:04:01,600 >> Så lad os gøre flere kredse. 77 00:04:01,600 --> 00:04:02,810 Hvordan er det? 78 00:04:02,810 --> 00:04:04,665 Lad os lave en anden cirkel. 79 00:04:04,665 --> 00:04:05,985 Det er spændende, ikke? 80 00:04:05,985 --> 00:04:09,630 81 00:04:09,630 --> 00:04:12,300 >> Så jeg siger bare Copy-Pasted hvad vi allerede havde. 82 00:04:12,300 --> 00:04:13,570 Lad os kalde det circle2. 83 00:04:13,570 --> 00:04:15,840 Og lad os gøre det nøjagtige samme ting og give det 84 00:04:15,840 --> 00:04:20,450 attributter, givet en x position 300. 85 00:04:20,450 --> 00:04:24,140 Yay, vi har to cirkler nu. 86 00:04:24,140 --> 00:04:27,240 >> Og selvfølgelig kunne vi opdatere disse værdier. 87 00:04:27,240 --> 00:04:31,640 Jeg kunne sætte det på 400, og nu er det bevæger sig. 88 00:04:31,640 --> 00:04:35,470 Og da det er irriterende, lad os fjerne det, så circle2.remove. 89 00:04:35,470 --> 00:04:39,000 90 00:04:39,000 --> 00:04:40,730 Det er gået nu. 91 00:04:40,730 --> 00:04:43,170 >> Så det, vi laver, og er bare meget, very-- dette 92 00:04:43,170 --> 00:04:46,030 er meget lig det, du kan gøre i jQuery, f.eks. 93 00:04:46,030 --> 00:04:48,240 Vi er lige manipulere DOM, det hedder. 94 00:04:48,240 --> 00:04:50,040 Du har måske hørt, at ordet før. 95 00:04:50,040 --> 00:04:53,255 Vi skaber ting, indstilling attributter på ting, fjerne ting. 96 00:04:53,255 --> 00:04:58,950 97 00:04:58,950 --> 00:05:02,360 >> Nu, her er hvor det bliver interessant. 98 00:05:02,360 --> 00:05:07,250 Så senere i koden, kunne vi stadig henvises til den oprindelige cirkel her. 99 00:05:07,250 --> 00:05:14,100 Så lad os nulstille sin attribut til cx. 100 00:05:14,100 --> 00:05:18,260 Lad os sige, dens x position til 400. 101 00:05:18,260 --> 00:05:22,406 Og jeg har tænkt mig at skifte at, så det er indlysende. 102 00:05:22,406 --> 00:05:23,360 Der vi går. 103 00:05:23,360 --> 00:05:24,780 >> Så vi tilføjet en cirkel. 104 00:05:24,780 --> 00:05:26,440 Vi sætter nogle attributter. 105 00:05:26,440 --> 00:05:28,210 Vi har tilføjet en anden cirkel, fjernet det. 106 00:05:28,210 --> 00:05:31,650 Og så er vi ændre den oprindelige cirkel. 107 00:05:31,650 --> 00:05:35,400 >> Men her er hvor det bliver meget mere interessant. 108 00:05:35,400 --> 00:05:39,070 Vi kan ikke kun sætte attributter som netop værdier, kan vi sige, 109 00:05:39,070 --> 00:05:41,610 hey, cirkel, gå til position 200. 110 00:05:41,610 --> 00:05:44,540 Vi kan også indstille dem som funktioner. 111 00:05:44,540 --> 00:05:48,850 >> Så i stedet for at give 400 her, vi kan gøre nogle beregning 112 00:05:48,850 --> 00:05:53,950 om flyve for, hvad vi ønsker at attribut til at være. 113 00:05:53,950 --> 00:05:56,580 Så dette er, hvordan du ville udtrykke det. 114 00:05:56,580 --> 00:06:00,660 Vi siger, i stedet for 400, så lad mig give dig en funktion i stedet. 115 00:06:00,660 --> 00:06:04,180 Og her, inde i denne funktion, Vi kan gøre enhver vanvittig beregning. 116 00:06:04,180 --> 00:06:06,820 >> Vi kunne tage tid og se på nogle andre ting 117 00:06:06,820 --> 00:06:11,230 og dynamisk bestemme cirklen hvilken værdi, vi ønsker. 118 00:06:11,230 --> 00:06:15,266 Hvad med vi bare give det en tilfældig X-position? 119 00:06:15,266 --> 00:06:20,360 120 00:06:20,360 --> 00:06:21,120 Så det er det. 121 00:06:21,120 --> 00:06:25,490 >> Så hvad der siger er, for hver x, køre denne funktion. 122 00:06:25,490 --> 00:06:29,340 Og det, vi gør, er at beregne nogle ting, en tilfældige gange bredden 123 00:06:29,340 --> 00:06:30,410 og returnere det. 124 00:06:30,410 --> 00:06:34,765 Så hver gang vi kører, at vi får en cirkel, der går til en tilfældig plads. 125 00:06:34,765 --> 00:06:36,394 Det er lidt cool. 126 00:06:36,394 --> 00:06:38,310 Jeg føler, at jeg kunne se på dette for lidt. 127 00:06:38,310 --> 00:06:44,274 128 00:06:44,274 --> 00:06:46,440 Vi er begyndt at komme til noget interessant her. 129 00:06:46,440 --> 00:06:49,120 130 00:06:49,120 --> 00:06:51,390 Lad os gøre disse data drevet nu. 131 00:06:51,390 --> 00:06:53,420 Der er ingen data her. 132 00:06:53,420 --> 00:06:54,482 Lad os ændre det. 133 00:06:54,482 --> 00:06:57,440 134 00:06:57,440 --> 00:07:12,140 >> Act II, Data Driven Documents-- Så lad os vende tilbage til her. 135 00:07:12,140 --> 00:07:15,340 Og lad os bare slippe af circle2, fordi vi bare tilføje og fjerne 136 00:07:15,340 --> 00:07:15,840 det. 137 00:07:15,840 --> 00:07:17,382 Så vi har ikke rigtig brug for det. 138 00:07:17,382 --> 00:07:21,421 Vi skal være meget mere klog her. 139 00:07:21,421 --> 00:07:23,170 Lad os sige, at vi har nogle data af en slags. 140 00:07:23,170 --> 00:07:31,540 141 00:07:31,540 --> 00:07:40,020 Man moment-- lad os sige, vi havde data af denne formular. 142 00:07:40,020 --> 00:07:41,800 Vi havde en matrix, bare en flok numre. 143 00:07:41,800 --> 00:07:45,750 Vi har syv numre her, uanset disse represent-- beløb 144 00:07:45,750 --> 00:07:48,810 i folks bankkonto, hvordan meget de vejer, Gud ved hvad. 145 00:07:48,810 --> 00:07:51,310 >> Disse tal, og vi ønsker at bruge vores cirkler 146 00:07:51,310 --> 00:07:53,240 at repræsentere disse numre eller anden måde. 147 00:07:53,240 --> 00:07:55,515 Vi ønsker at binde vores cirkler af disse numre. 148 00:07:55,515 --> 00:07:58,750 149 00:07:58,750 --> 00:07:59,626 Så det, vi gør. 150 00:07:59,626 --> 00:08:01,500 Lad os sige, vi vil have en cirkel for hvert nummer. 151 00:08:01,500 --> 00:08:03,590 Vi kunne gøre det gamle ting vi doing-- 152 00:08:03,590 --> 00:08:06,020 cirkel append og circle2 og circle3. 153 00:08:06,020 --> 00:08:10,020 Men det får ud af hånden, og der er en masse af at gentage logik. 154 00:08:10,020 --> 00:08:12,760 >> Så lad os få mere smart med det. 155 00:08:12,760 --> 00:08:17,810 I stedet for at bruge var cirkel svg.append at vi blot brugte, 156 00:08:17,810 --> 00:08:21,580 vi kommer til at bruge denne lille blok her. 157 00:08:21,580 --> 00:08:24,510 Jeg ønsker ikke at gå i dybden i, hvad alle disse dele gør. 158 00:08:24,510 --> 00:08:26,020 Og det er lidt af en avanceret emne. 159 00:08:26,020 --> 00:08:27,830 Og jeg ville ønske, jeg kunne. 160 00:08:27,830 --> 00:08:31,370 >> Men den vigtigste ting at recognize-- og du vil se meget ofte i D3 kode. 161 00:08:31,370 --> 00:08:36,840 Denne blok af tekst basic skaber så mange cirkler 162 00:08:36,840 --> 00:08:41,360 som der er dataelementer i dette array her. 163 00:08:41,360 --> 00:08:53,420 164 00:08:53,420 --> 00:08:55,780 Så det skaber så mange kredse som der er elementer. 165 00:08:55,780 --> 00:08:58,520 Det kommer til at skabe os syv cirkler. 166 00:08:58,520 --> 00:09:01,710 Og det gør en virkelig, virkelig centrale ting. 167 00:09:01,710 --> 00:09:02,460 Så lad os køre det. 168 00:09:02,460 --> 00:09:05,460 Lad os fjerne vores andre cirkel. 169 00:09:05,460 --> 00:09:09,565 Lad os bare kommentere dette skilles ud og køre det igen. 170 00:09:09,565 --> 00:09:13,840 171 00:09:13,840 --> 00:09:15,260 >> Der vi går. 172 00:09:15,260 --> 00:09:18,030 Så vores cirkel her er der en parti mørkere, fordi vi 173 00:09:18,030 --> 00:09:20,720 har syv cirkler, en oven på den anden. 174 00:09:20,720 --> 00:09:25,425 Vi har lige oprettet syv cirkler, en hver for hver af disse dataelementer. 175 00:09:25,425 --> 00:09:28,860 Men der er en vigtig ting, der skete med dette uddrag lige her. 176 00:09:28,860 --> 00:09:31,030 >> Det er, at data var bundet. 177 00:09:31,030 --> 00:09:33,440 Så hver eneste af disse dataelementer 178 00:09:33,440 --> 00:09:38,830 10, 45, 105, var bundet til en bestemt cirkel. 179 00:09:38,830 --> 00:09:40,960 Så disse ikke blot skabt en flok af cirkler 180 00:09:40,960 --> 00:09:43,420 men binder de to ting sammen. 181 00:09:43,420 --> 00:09:48,740 >> Og i fremtiden, fordi vi skabte de kredse med dette D3 funktion, 182 00:09:48,740 --> 00:09:52,430 hvis jeg giver dig en cirkel, kan du give mig de data, der er forbundet med det. 183 00:09:52,430 --> 00:09:53,280 Så vi kan spørge D3. 184 00:09:53,280 --> 00:09:54,840 Hey, D3, jeg har denne cirkel. 185 00:09:54,840 --> 00:09:57,350 Hvad er de data, cirklen har? 186 00:09:57,350 --> 00:10:01,290 Og D3 ville fortælle os 10 eller 45 eller 105. 187 00:10:01,290 --> 00:10:02,380 >> Disse ting er bundet. 188 00:10:02,380 --> 00:10:04,490 Det er en meget, meget grundlæggende koncept. 189 00:10:04,490 --> 00:10:06,070 Lad os se på det. 190 00:10:06,070 --> 00:10:12,210 >> Så den måde, vi vil bede D3-- så dette er irrelevant for dette, 191 00:10:12,210 --> 00:10:16,620 men bare tro mig på det. 192 00:10:16,620 --> 00:10:17,620 Det er sådan, vi beder D3. 193 00:10:17,620 --> 00:10:21,312 Hey, D3, giv mig den første cirkel, som du kan finde. 194 00:10:21,312 --> 00:10:23,580 Giv mig den første cirkel, du kan finde. 195 00:10:23,580 --> 00:10:29,660 Og så kunne vi spørge D3, hvad der er data om det, som dette, 10. 196 00:10:29,660 --> 00:10:33,380 >> Så vi bare spørge D3, finde mig den første cirkel, du kan finde. 197 00:10:33,380 --> 00:10:34,400 Hvad er dens data? 198 00:10:34,400 --> 00:10:36,650 10, der er faktisk vores første dataelement. 199 00:10:36,650 --> 00:10:42,150 Vi kunne spørge det, hey, D3, finder os vores tredje cirkel. 200 00:10:42,150 --> 00:10:44,450 105. 201 00:10:44,450 --> 00:10:45,740 Hvorfor er det virkelig vigtigt? 202 00:10:45,740 --> 00:10:49,790 203 00:10:49,790 --> 00:10:52,250 >> Så lige her, nævnte jeg at vi kunne bruge funktionerne. 204 00:10:52,250 --> 00:10:54,910 Og jeg nævnte det var en meget kraftfuld ting. 205 00:10:54,910 --> 00:11:03,070 Så ikke alene kan vores funktioner gøre ting Ligesom gøre nogle beregninger, for eksempel, 206 00:11:03,070 --> 00:11:09,170 returnere et tilfældigt tal, kan det også gøre ting baseret på data. 207 00:11:09,170 --> 00:11:11,550 Dette er, hvad data drevet dokumenter betyder. 208 00:11:11,550 --> 00:11:13,750 Det er, hvad D3 står for. 209 00:11:13,750 --> 00:11:17,800 >> Så dette x postition-- stedet for bare at sige, alle de kredse, 210 00:11:17,800 --> 00:11:21,735 få X-position 200, vi kunne give det en funktion. 211 00:11:21,735 --> 00:11:26,140 212 00:11:26,140 --> 00:11:30,140 Og her kan vi gøre nogle beregninger. 213 00:11:30,140 --> 00:11:33,710 og d her står på plads for data. 214 00:11:33,710 --> 00:11:36,120 Så hver gang vi har en cirkel, dybest set, 215 00:11:36,120 --> 00:11:37,750 D3 vil skabe disse syv cirkler. 216 00:11:37,750 --> 00:11:38,500 Og så for hver 217 00:11:38,500 --> 00:11:41,920 >> cirkel, det kommer til at gå, hey, circle1 hvad er din X-position. 218 00:11:41,920 --> 00:11:45,210 Tidligere var vi altid besvare 200. 219 00:11:45,210 --> 00:11:48,630 Men nu, hver gang D3 spørger os, hvad er din X-position, 220 00:11:48,630 --> 00:11:51,790 det kommer til at give os-- vi har at cirkel, så vi har data. 221 00:11:51,790 --> 00:11:55,290 Det kommer til at give os oplysninger og sige, hvad vil du redegørelsen at være, 222 00:11:55,290 --> 00:11:57,120 baseret på disse data. 223 00:11:57,120 --> 00:11:59,590 >> Lad os bare returnere de faktiske data. 224 00:11:59,590 --> 00:12:04,910 Så hvis vi køre dette, dette giver Amerikanske data drevet dokumenter. 225 00:12:04,910 --> 00:12:08,040 Disse kredse er baseret i forhold position-- 226 00:12:08,040 --> 00:12:11,120 de er baser som en funktion af dataene. 227 00:12:11,120 --> 00:12:13,100 >> Så for den første cirkel, D3 sætter en cirkel. 228 00:12:13,100 --> 00:12:16,770 Og så D3 beder os, hvad gør du ønsker, at redegørelsen skal være. 229 00:12:16,770 --> 00:12:19,620 Og vi bare sige, hvad dataene. 230 00:12:19,620 --> 00:12:21,185 Gør redegørelsen 10. 231 00:12:21,185 --> 00:12:26,320 >> Så spørger det, hvad vil du have den redegørelse at være for den anden cirkel. 232 00:12:26,320 --> 00:12:27,270 Og vi svare: 45. 233 00:12:27,270 --> 00:12:30,000 234 00:12:30,000 --> 00:12:32,230 Og vi selvfølgelig kan gøre nogle beregning her. 235 00:12:32,230 --> 00:12:35,510 Jeg finder, at disse kredse er lidt squished op. 236 00:12:35,510 --> 00:12:38,965 >> Så ganges med 3, multipliceres data med 3. 237 00:12:38,965 --> 00:12:41,870 238 00:12:41,870 --> 00:12:43,840 Vores cirkel lige blevet udvidet ud. 239 00:12:43,840 --> 00:12:46,730 Vores værdi blev tredoblet. 240 00:12:46,730 --> 00:12:51,010 >> Cirklen er virkelig på kanten, så lad os måske slags opveje det. 241 00:12:51,010 --> 00:12:53,632 Lad os sige, med 20. 242 00:12:53,632 --> 00:12:56,070 Værsgo. 243 00:12:56,070 --> 00:12:57,590 >> Dette er en data visualisering. 244 00:12:57,590 --> 00:13:01,767 Det er en meget grundlæggende en, men dette giver os et indblik i vores data. 245 00:13:01,767 --> 00:13:04,600 Det fortæller os, at vi f.eks har en lille klynge af elementer. 246 00:13:04,600 --> 00:13:06,340 Og vi har en stor outlier her. 247 00:13:06,340 --> 00:13:10,830 Det giver os nogle oplysninger om fordelingen. 248 00:13:10,830 --> 00:13:20,830 >> Hvis vi for eksempel at ændre dataene til 150 her og refresh, 249 00:13:20,830 --> 00:13:22,630 vores visualisering ændres. 250 00:13:22,630 --> 00:13:24,285 Dette dokument er data drevet. 251 00:13:24,285 --> 00:13:32,640 252 00:13:32,640 --> 00:13:36,180 >> Så selvfølgelig, alle disse elementer, alle disse egenskaber her, 253 00:13:36,180 --> 00:13:38,430 vi kan bruge en funktion, der ikke bare de numre, ikke blot 254 00:13:38,430 --> 00:13:39,900 x- og y-positioner. 255 00:13:39,900 --> 00:13:42,120 Så vi kan bruge en funktion til farven. 256 00:13:42,120 --> 00:13:45,260 257 00:13:45,260 --> 00:13:46,360 Så vi vil gøre det samme. 258 00:13:46,360 --> 00:13:49,360 Vi vil give det en funktion. 259 00:13:49,360 --> 00:13:52,320 >> Og lad os sige, vi kunne have betingede i vores funktion. 260 00:13:52,320 --> 00:13:54,770 Denne funktion kan hundrede af linjer lang. 261 00:13:54,770 --> 00:13:57,150 Det kan gøre meget, meget komplicerede ting. 262 00:13:57,150 --> 00:13:59,080 >> Så lad os sætte en if-sætning her. 263 00:13:59,080 --> 00:14:03,420 Lad os sige, hvis vores data er mindre end 50, det er nogle tærskel 264 00:14:03,420 --> 00:14:05,817 at vi er interesseret i en eller anden grund. 265 00:14:05,817 --> 00:14:06,650 Lad os gøre det grønne. 266 00:14:06,650 --> 00:14:09,830 267 00:14:09,830 --> 00:14:15,320 Ellers lad os gøre det rødt. 268 00:14:15,320 --> 00:14:16,110 Hvordan er det? 269 00:14:16,110 --> 00:14:19,630 270 00:14:19,630 --> 00:14:21,220 Nice. 271 00:14:21,220 --> 00:14:24,860 >> Så vores data visualisering er begyndt at formidle mere interessante oplysninger 272 00:14:24,860 --> 00:14:26,727 på mange kanaler. 273 00:14:26,727 --> 00:14:28,560 Så nu ved vi lidt om fordelingen. 274 00:14:28,560 --> 00:14:31,768 Og vi ved, at der er en slags afskåret på 50, som vi er interesseret i. 275 00:14:31,768 --> 00:14:35,630 Vi ved, at der er data to punkter under denne tærskel, og de fleste af dem 276 00:14:35,630 --> 00:14:36,130 ovenfor. 277 00:14:36,130 --> 00:14:41,510 278 00:14:41,510 --> 00:14:46,160 >> Så som et sidste skridt, disse data her, det er meget sjældent at se dette som. 279 00:14:46,160 --> 00:14:52,610 Så lad os bare flytte det ud til en variabel fordi det er renere, som denne. 280 00:14:52,610 --> 00:15:02,980 281 00:15:02,980 --> 00:15:05,197 Og så bruger vi denne variabel her. 282 00:15:05,197 --> 00:15:06,280 Det er præcis det samme. 283 00:15:06,280 --> 00:15:07,280 Det er bare en smule renere. 284 00:15:07,280 --> 00:15:25,300 285 00:15:25,300 --> 00:15:35,300 >> Næste op, Act III, Scales-- Så en problem lige 286 00:15:35,300 --> 00:15:38,920 her er, hvis vi ændrer vores data i denne 200 value-- 287 00:15:38,920 --> 00:15:41,685 hvis vi ændrer det til 400 eller noget, og refresh, 288 00:15:41,685 --> 00:15:44,540 så denne værdi gik bare Offscreen. 289 00:15:44,540 --> 00:15:49,040 Så vores logik lige her om, hvordan vi gør det gange 3 290 00:15:49,040 --> 00:15:52,570 og 20, til at sprede det ud og derefter offset det lidt er virkelig klodset. 291 00:15:52,570 --> 00:15:54,150 >> Hvad mener disse tal betyder? 292 00:15:54,150 --> 00:15:55,400 De er bare svært kodet der. 293 00:15:55,400 --> 00:15:58,830 Og de er meget bundet til dataene. 294 00:15:58,830 --> 00:16:00,550 Vi ønsker en data drevet dokument. 295 00:16:00,550 --> 00:16:05,460 Vi ønsker en meget fleksibel dokument, at givne data, tilpasser sig det 296 00:16:05,460 --> 00:16:07,900 og repræsenterer det. 297 00:16:07,900 --> 00:16:11,330 >> Det, vi dybest set har brug for er, at vi har denne nummerserie 10. 298 00:16:11,330 --> 00:16:12,640 45, 105. 299 00:16:12,640 --> 00:16:17,630 Og vi ønsker at kortlægge det ud på bredde, den fulde bredde her. 300 00:16:17,630 --> 00:16:20,620 Så vi har området numre går fra 0 til 100. 301 00:16:20,620 --> 00:16:24,980 Og vi har denne campus I går 20-700, i dette tilfælde. 302 00:16:24,980 --> 00:16:26,515 >> Vi slags ønsker at kortlægge det på. 303 00:16:26,515 --> 00:16:30,002 Vi ønsker at skalere det op og så opvejet det en lille smule. 304 00:16:30,002 --> 00:16:33,165 Det viser sig, at D3 har disse. 305 00:16:33,165 --> 00:16:34,220 Det kaldes en skala. 306 00:16:34,220 --> 00:16:37,410 307 00:16:37,410 --> 00:16:38,250 Så lad os bruge den. 308 00:16:38,250 --> 00:16:46,300 309 00:16:46,300 --> 00:16:49,670 >> Den måde, at works-- jeg vil skriver dette op og derefter forklare det. 310 00:16:49,670 --> 00:17:01,530 311 00:17:01,530 --> 00:17:02,450 Dette er en skala. 312 00:17:02,450 --> 00:17:08,670 Hvad det vil gøre, er, vil det kortlægge værdier fra 1 til 200 om til 20 til 600. 313 00:17:08,670 --> 00:17:10,990 Vi kan kontrollere det. 314 00:17:10,990 --> 00:17:13,329 Vi kan se, at her. 315 00:17:13,329 --> 00:17:21,704 >> Så hvis jeg fodre den 1-- et øjeblik. 316 00:17:21,704 --> 00:17:47,764 317 00:17:47,764 --> 00:17:48,555 Giv mig et sekund. 318 00:17:48,555 --> 00:17:53,680 319 00:17:53,680 --> 00:17:55,080 Jeg må have skrevet forkert det. 320 00:17:55,080 --> 00:18:15,320 321 00:18:15,320 --> 00:18:15,990 Der du går. 322 00:18:15,990 --> 00:18:17,930 Jeg er ked af det. 323 00:18:17,930 --> 00:18:22,050 >> Så hvad en skala vil gøre er, vil det tage en værdi 324 00:18:22,050 --> 00:18:24,930 og derefter konvertere denne, udvide det ud, så det 325 00:18:24,930 --> 00:18:27,320 fylder hele spektret du beder om. 326 00:18:27,320 --> 00:18:32,910 Så i dette tilfælde, hvis vi giver det en, det kommer til at kortlægge det ud på 20. 327 00:18:32,910 --> 00:18:37,750 Og hvis vi giver det 200, er det kommer til kort, der på 600. 328 00:18:37,750 --> 00:18:40,460 Og et eller andet sted midt imellem, hvis vi får 100, er det 329 00:18:40,460 --> 00:18:44,610 vil være et sted mellem 20 og 600. 330 00:18:44,610 --> 00:18:51,480 >> Og selvfølgelig, nu er hvad vi nødt til at fjerne de hårde enten kodet 331 00:18:51,480 --> 00:18:53,402 ting, vi har lige der. 332 00:18:53,402 --> 00:18:55,950 Så det, vi ønsker, er at tage de data, vi er 333 00:18:55,950 --> 00:19:00,950 givet, at de enkelte data element, og videregive det til at skalere først. 334 00:19:00,950 --> 00:19:02,635 Så skala vil skalere det op. 335 00:19:02,635 --> 00:19:27,020 336 00:19:27,020 --> 00:19:48,880 >> Well-- Åh, vi har en lille fejl her. 337 00:19:48,880 --> 00:19:50,120 Vi mangler data. 338 00:19:50,120 --> 00:19:51,290 Der du går. 339 00:19:51,290 --> 00:19:58,550 340 00:19:58,550 --> 00:19:59,550 Og der udvider det. 341 00:19:59,550 --> 00:20:01,383 >> Det giver os den samme resultat, vi havde før, 342 00:20:01,383 --> 00:20:04,030 men i stedet for at have dem hårdt kodet begrænsninger. 343 00:20:04,030 --> 00:20:07,790 Og hvis størrelsen af ​​vores lærred ændringer, for eksempel, 344 00:20:07,790 --> 00:20:11,790 hvis vi ønsker at have dette over 400 pixels, og det squishes ud, 345 00:20:11,790 --> 00:20:15,440 vi kan få det over-- vi kan udvide den, eller vi 346 00:20:15,440 --> 00:20:21,890 kan reducere denne venstre margen til noget mere eller mindre end 20. 347 00:20:21,890 --> 00:20:25,470 Disse tal, disse hårde kodet tal nu giver mening for os. 348 00:20:25,470 --> 00:20:28,110 349 00:20:28,110 --> 00:20:30,520 >> Og vi kunne gøre meget mere interessante ting. 350 00:20:30,520 --> 00:20:35,990 Så i stedet for at have en lineær skala, kan vi ønsker at logge en skala. 351 00:20:35,990 --> 00:20:37,840 Og det vil give os en log skala. 352 00:20:37,840 --> 00:20:41,269 >> Så nu vores målestok, i stedet for bare udvide, at området, 353 00:20:41,269 --> 00:20:42,810 det gør mere avancerede ting. 354 00:20:42,810 --> 00:20:48,790 355 00:20:48,790 --> 00:20:53,790 I stedet for at have dette interval hårdt kodet, og i stedet for at at 600, 356 00:20:53,790 --> 00:20:58,465 Vi vil måske bare bruge bredden, så fra 20 til bredden minus 40, 357 00:20:58,465 --> 00:21:02,392 2 gange den margen på den anden side. 358 00:21:02,392 --> 00:21:05,350 Og det gør en meget mere mening at nogen, der kunne se på koden. 359 00:21:05,350 --> 00:21:08,080 360 00:21:08,080 --> 00:21:11,850 >> Interessant, får skællene meget, meget sofistikerede samt. 361 00:21:11,850 --> 00:21:13,350 De gør en masse interessante ting. 362 00:21:13,350 --> 00:21:17,620 Så skalaer har ikke nødvendigvis at fungere lige med tal. 363 00:21:17,620 --> 00:21:18,955 Lad os lave en farveskala. 364 00:21:18,955 --> 00:21:23,120 365 00:21:23,120 --> 00:21:26,120 >> Så vores sortiment kunne være-- vores domæne er 1 til 200. 366 00:21:26,120 --> 00:21:28,220 Det er input ting. 367 00:21:28,220 --> 00:21:33,793 Men vi måske ønsker at kortlægge fra grøn til rød, for eksempel. 368 00:21:33,793 --> 00:21:39,710 369 00:21:39,710 --> 00:21:42,910 Og nu, hvis vi passerer det 1, vi kommer til at få grønt. 370 00:21:42,910 --> 00:21:45,110 Hvis vi giver det 200, får vi rød. 371 00:21:45,110 --> 00:21:49,480 Og hvis vi passere det noget midt imellem, det vil være nogle blanding af det, 372 00:21:49,480 --> 00:21:52,520 sted på gradient mellem grøn og rød. 373 00:21:52,520 --> 00:21:55,210 >> Og i stedet for at have denne form for klodset logik 374 00:21:55,210 --> 00:21:58,550 vi har her med betinget lige der, 375 00:21:58,550 --> 00:22:03,250 vi kunne have something-- en lineær skala mellem dem. 376 00:22:03,250 --> 00:22:07,100 Så vi ville bruge skalaen vi bare oprettet, som vi kaldte farve. 377 00:22:07,100 --> 00:22:09,060 Og vi ville give det D, som er vores dataelement. 378 00:22:09,060 --> 00:22:14,250 379 00:22:14,250 --> 00:22:15,060 Og der vi gå. 380 00:22:15,060 --> 00:22:18,070 Vi har en farveskala. 381 00:22:18,070 --> 00:22:18,940 >> Så det er kortlægning. 382 00:22:18,940 --> 00:22:20,960 Så langt tilbage, er helt grøn. 383 00:22:20,960 --> 00:22:22,560 Den længst til højre er helt rød. 384 00:22:22,560 --> 00:22:24,828 Og alt i mellem er en funktion af d. 385 00:22:24,828 --> 00:22:33,369 386 00:22:33,369 --> 00:22:35,160 Vi har en interessant visualiseringer her. 387 00:22:35,160 --> 00:22:36,952 Men vores data var slags kedelige. 388 00:22:36,952 --> 00:22:39,410 Lad os se, hvad vi kunne gøre, hvis vi havde mere interessante data. 389 00:22:39,410 --> 00:22:44,420 390 00:22:44,420 --> 00:22:50,500 >> Act IV, der arbejder med Data-- den første ting 391 00:22:50,500 --> 00:22:53,560 vi ønsker at gøre for at gøre vores visualisering mere interessant 392 00:22:53,560 --> 00:22:56,140 er at flytte data et andet sted. 393 00:22:56,140 --> 00:22:58,310 Det er meget klodset at have data hårdt kodet her. 394 00:22:58,310 --> 00:23:01,220 Og generelt, vil vi være at spørge en anden for data. 395 00:23:01,220 --> 00:23:05,400 Vi vil måske spørge regeringen, Census Bureau, hvad er dine data 396 00:23:05,400 --> 00:23:10,170 og derefter plotte det eller spørge nogle tredjeparts enhed for nogle data 397 00:23:10,170 --> 00:23:13,330 og derefter opbygge en visualisering på det. 398 00:23:13,330 --> 00:23:17,170 >> Så det første, vi ønsker at gøre er flytte det til et andet sted. 399 00:23:17,170 --> 00:23:24,130 Så jeg har tænkt mig at oprette en fil her kaldet data.json. 400 00:23:24,130 --> 00:23:25,600 JSON er dataformatet. 401 00:23:25,600 --> 00:23:29,210 Du behøver ikke at vide meget om det. 402 00:23:29,210 --> 00:23:33,210 Og vi kommer til at kopiere lidt data, vi har der, 403 00:23:33,210 --> 00:23:40,330 indsætte det i der ordret, gå tilbage til vores visualisering kode 404 00:23:40,330 --> 00:23:45,362 her, og bruge denne funktion lige her. 405 00:23:45,362 --> 00:23:46,820 Du behøver ikke at kende detaljerne. 406 00:23:46,820 --> 00:23:49,800 Men hvad det vil gøre, er, det vil finde filen, 407 00:23:49,800 --> 00:23:51,780 hente den og returnere den til os. 408 00:23:51,780 --> 00:24:11,660 409 00:24:11,660 --> 00:24:15,220 Så hvad det gør, er, det går og få data.json fil. 410 00:24:15,220 --> 00:24:18,570 Og så al den kode, der er indrykket inside-- væsentlige, 411 00:24:18,570 --> 00:24:21,800 al den kode, vi har there-- vil kører kun, når vi får data tilbage. 412 00:24:21,800 --> 00:24:25,760 Og så det kommer til at køre den kode med de data, vi har. 413 00:24:25,760 --> 00:24:28,870 Store, har vi en visualisering, der forespørgsler 414 00:24:28,870 --> 00:24:31,390 for nogle kode sted andet, der normalt er 415 00:24:31,390 --> 00:24:36,110 hvor det forespørger nogle data fra et andet sted, som normalt er 416 00:24:36,110 --> 00:24:38,656 hvordan visualiseringer virker. 417 00:24:38,656 --> 00:24:41,400 >> Men jeg ønsker at gå tilbage til dataene. 418 00:24:41,400 --> 00:24:48,030 Så data fundamentalt i D3-- D3 forbruger data, der er en liste over ting. 419 00:24:48,030 --> 00:24:53,000 D3 forventer dataene bare være en liste af ting, en vifte af ting. 420 00:24:53,000 --> 00:24:58,780 Det er ligegyldigt, hvad disse ting er, så længe det er et array af dem. 421 00:24:58,780 --> 00:25:02,460 >> Så her, for eksempel, kunne vi af Selvfølgelig har med flydende komma værdier. 422 00:25:02,460 --> 00:25:04,830 Vi kunne have negativer. 423 00:25:04,830 --> 00:25:09,400 D3 er ligeglad, så længe da det er en liste over ting. 424 00:25:09,400 --> 00:25:13,270 >> Som interessante ting vi kunne have, vi kunne også 425 00:25:13,270 --> 00:25:19,410 har en liste af strenge som. 426 00:25:19,410 --> 00:25:25,440 Så dette er Crimson overskrifter Jeg tog et par dage siden. 427 00:25:25,440 --> 00:25:29,220 Og måske du kan finde nogle interessante ting om disse a overskrifter. 428 00:25:29,220 --> 00:25:30,970 >> Så igen, det er en liste over ting. 429 00:25:30,970 --> 00:25:32,360 D3 er ligeglad. 430 00:25:32,360 --> 00:25:35,572 Disse tilfældigvis en streng. 431 00:25:35,572 --> 00:25:36,530 Vi har ændret vores data. 432 00:25:36,530 --> 00:25:38,210 >> Lad os vende tilbage til vores visualisering. 433 00:25:38,210 --> 00:25:42,495 Nu er vores visualisering forventer input til at være tal. 434 00:25:42,495 --> 00:25:44,370 Så vi bliver nødt til at foretage et par ændringer. 435 00:25:44,370 --> 00:25:47,180 436 00:25:47,180 --> 00:25:52,180 Så for eksempel, først og fremmest, måske Vi ønsker at sætte disse kredse sammen 437 00:25:52,180 --> 00:25:56,870 af længden af ​​overskriften, den antal tegn i overskriften. 438 00:25:56,870 --> 00:26:03,600 >> Så hvad vi vil gøre is-- hver gang vores funktion kaldes med en snor, 439 00:26:03,600 --> 00:26:09,095 Vi finder det er længde og derefter sende det til skalaen. 440 00:26:09,095 --> 00:26:11,550 Farven vil jeg vende tilbage at til stål blå. 441 00:26:11,550 --> 00:26:19,060 442 00:26:19,060 --> 00:26:20,420 Og der vi gå. 443 00:26:20,420 --> 00:26:23,190 Vi har en visualisering af Crimson overskrifter. 444 00:26:23,190 --> 00:26:25,500 >> Vores målestok er en smule off. 445 00:26:25,500 --> 00:26:29,680 Lad os antage, at den længste overskrift er 100 tegn, 446 00:26:29,680 --> 00:26:32,244 så spænde det ud en smule. 447 00:26:32,244 --> 00:26:33,410 Og vi har en visualisering. 448 00:26:33,410 --> 00:26:36,710 Så det lader til at de fleste overskrifter er temmelig tæt sammen, 449 00:26:36,710 --> 00:26:38,750 i form af karakter linje. 450 00:26:38,750 --> 00:26:41,200 Men en der virkelig skiller sig ud. 451 00:26:41,200 --> 00:26:46,660 >> Vi kunne bygge nogle værktøjer at undersøge denne mere. 452 00:26:46,660 --> 00:26:50,710 Men da jeg arbejdede på dette, var jeg nysgerrig, om der i dette datasæt, 453 00:26:50,710 --> 00:26:53,880 overskrifter med et kolon i dem ville være længere. 454 00:26:53,880 --> 00:26:55,770 Jeg antager, de ville. 455 00:26:55,770 --> 00:26:56,660 >> Så lad os finde ud af. 456 00:26:56,660 --> 00:27:00,650 Lad os bruge farven kanal, som vi gjorde før, 457 00:27:00,650 --> 00:27:04,540 at indkode nogle om, hvorvidt der er et kolon eller nej. 458 00:27:04,540 --> 00:27:07,220 Så vi vil bruge en betinget igen. 459 00:27:07,220 --> 00:27:09,350 Du behøver ikke at vide detaljerne i denne, 460 00:27:09,350 --> 00:27:14,260 men det er sådan, vi kontrollere en streng for en bestemt karakter 461 00:27:14,260 --> 00:27:16,355 i JavaScript, igen, ikke relevant. 462 00:27:16,355 --> 00:27:18,910 463 00:27:18,910 --> 00:27:23,270 >> Men hvis vi ikke finder en kolon, vil vi vende tilbage grønt. 464 00:27:23,270 --> 00:27:26,100 Og hvis vi gør det, vil vi vende tilbage rødt. 465 00:27:26,100 --> 00:27:29,010 Så igen, overskrifter, der har et kolon vil være rødt. 466 00:27:29,010 --> 00:27:34,980 Det er, hvad dette means-- nice. 467 00:27:34,980 --> 00:27:38,040 >> Så det lader til, at min hypotese stødte. 468 00:27:38,040 --> 00:27:39,360 Der er kun to. 469 00:27:39,360 --> 00:27:42,380 Vi har kun seks datapunkter og kun to havde koloner. 470 00:27:42,380 --> 00:27:45,510 Men det virker en smule mere på den nedre ende, i virkeligheden. 471 00:27:45,510 --> 00:27:47,830 Overskrifter med kolon synes generelt være kortere, 472 00:27:47,830 --> 00:27:52,370 i det mindste i vores data set-- interessant. 473 00:27:52,370 --> 00:27:55,830 >> Lad os tilbage, at for stål blå og derefter se 474 00:27:55,830 --> 00:28:00,601 hvad vi kan gøre med selv mere interessante data. 475 00:28:00,601 --> 00:28:04,370 476 00:28:04,370 --> 00:28:09,070 Så igen, jeg nævnte, at data i D3 er en liste over ting. 477 00:28:09,070 --> 00:28:11,080 Vi har set antal mange typer. 478 00:28:11,080 --> 00:28:12,810 Vi har set strenge. 479 00:28:12,810 --> 00:28:15,700 Men de ting kan også være objekter. 480 00:28:15,700 --> 00:28:20,080 >> De kan være komplicerede ting der omfatter en masse ting. 481 00:28:20,080 --> 00:28:24,510 At sige at mere klart, i de fleste tilfælde, vi 482 00:28:24,510 --> 00:28:28,384 ønsker at opbygge hvert datapunkt som mere kompliceret end blot én værdi. 483 00:28:28,384 --> 00:28:30,175 Hvis du forestiller en database om studerende, 484 00:28:30,175 --> 00:28:32,470 der kan være en elev navn, en studiekort, 485 00:28:32,470 --> 00:28:36,370 og en masse ting forbundet med en bestemt post, 486 00:28:36,370 --> 00:28:39,834 ikke kun en streng eller et tal. 487 00:28:39,834 --> 00:28:40,750 Så lad os se på det. 488 00:28:40,750 --> 00:28:55,180 489 00:28:55,180 --> 00:28:56,760 >> Dette er en af ​​disse datasæt. 490 00:28:56,760 --> 00:28:59,090 Dette er et datasæt om jordskælv. 491 00:28:59,090 --> 00:29:01,910 492 00:29:01,910 --> 00:29:08,430 Så alt her på vores liste eller matrix ting indeholder selv mange ting. 493 00:29:08,430 --> 00:29:11,380 Så hver datapunkt har en størrelsesorden og et koordinatsystem. 494 00:29:11,380 --> 00:29:13,425 Og koordinerer selv indeholder to ting. 495 00:29:13,425 --> 00:29:15,960 496 00:29:15,960 --> 00:29:20,450 >> Så hver dag er nu en masse mere kompliceret og meget mere interessant 497 00:29:20,450 --> 00:29:22,700 og indeholder meget mere interessante oplysninger. 498 00:29:22,700 --> 00:29:26,730 Lad os se, vi kunne bygge ud af det. 499 00:29:26,730 --> 00:29:36,130 Vender tilbage tilbage til her, igen, ved hjælp af vores histogram cirkel visualisering 500 00:29:36,130 --> 00:29:42,110 vi har bygget, lad os se om vi kan bygge en visualisering af størrelsesorden fordeling 501 00:29:42,110 --> 00:29:43,305 i vores datasæt. 502 00:29:43,305 --> 00:29:45,850 503 00:29:45,850 --> 00:29:48,660 >> Så her, det er det samme koncept. 504 00:29:48,660 --> 00:29:51,920 Men nu, d indeholder flere ting. 505 00:29:51,920 --> 00:29:54,780 d indeholder mange dataelementer. 506 00:29:54,780 --> 00:29:57,946 Så vi får d tilbage. 507 00:29:57,946 --> 00:29:59,670 D3 giver os d. 508 00:29:59,670 --> 00:30:06,080 Og vi reagerer ved at finde størrelsen af d og derefter passerer det til skalaen. 509 00:30:06,080 --> 00:30:08,490 >> Og så er vi nødt til at ændre vores målestok, selvfølgelig. 510 00:30:08,490 --> 00:30:12,980 Så størrelser simpelthen ikke gå meget mere end 10. 511 00:30:12,980 --> 00:30:15,485 Faktisk har der aldrig været 10 jordskælv. 512 00:30:15,485 --> 00:30:19,360 Men det er lidt vores øverste ende vores øverste spektrum. 513 00:30:19,360 --> 00:30:20,240 >> Lad os genopfriske. 514 00:30:20,240 --> 00:30:22,990 Nice, har vi en visualisering. 515 00:30:22,990 --> 00:30:25,490 Det er interessant at note-- så der er data to punkter, 516 00:30:25,490 --> 00:30:29,010 er næsten nøjagtigt oven på hinanden anden, udtrykt i størrelse. 517 00:30:29,010 --> 00:30:31,350 Du ser dette ved opaciteten vi bruger. 518 00:30:31,350 --> 00:30:40,810 519 00:30:40,810 --> 00:30:42,690 >> Vi har geografiske data nu. 520 00:30:42,690 --> 00:30:44,710 Vi har breddegrader og længdegrader. 521 00:30:44,710 --> 00:30:47,549 Måske kunne vi gøre noget meget mere interessant med det. 522 00:30:47,549 --> 00:30:49,590 Lad os finde nogle flere interessant måde at visualisere 523 00:30:49,590 --> 00:30:53,500 dette mere kompliceret data, vi har adgang til. 524 00:30:53,500 --> 00:31:04,950 >> Act V, Mapping-- fundamentalt, vi ønsker at sætte disse på et kort. 525 00:31:04,950 --> 00:31:07,690 Jeg mener, det er her det går. 526 00:31:07,690 --> 00:31:13,130 Vi ønsker at indkode information om Positionen af ​​disse jordskælv aflæsninger, 527 00:31:13,130 --> 00:31:16,350 samt deres størrelse, fordi vi har nu. 528 00:31:16,350 --> 00:31:21,310 Vi forstår at forbruge mere komplicerede data. 529 00:31:21,310 --> 00:31:26,200 >> Det første, vi vil gøre, er oprette et kort, en baggrund kort. 530 00:31:26,200 --> 00:31:29,360 Jeg har tænkt mig at gå igennem dette meget hurtigt. 531 00:31:29,360 --> 00:31:30,560 Dette er vanskelig kode. 532 00:31:30,560 --> 00:31:33,110 Det er endnu en af ​​dem, opskrifter du ikke rigtig 533 00:31:33,110 --> 00:31:35,690 nødt til at forstå fuldt ud for dig at bruge. 534 00:31:35,690 --> 00:31:38,510 535 00:31:38,510 --> 00:31:39,740 Men dette er kode. 536 00:31:39,740 --> 00:31:43,580 Denne kode her skaber et kort. 537 00:31:43,580 --> 00:31:45,730 >> Vi kommer ikke til at gå i detaljer. 538 00:31:45,730 --> 00:31:54,210 Men overfladisk, er, hvad den gør, det forespørger denne us.json fil, som 539 00:31:54,210 --> 00:31:57,150 er en datafil som den, vi havde før. 540 00:31:57,150 --> 00:31:59,150 Det er mere kompleks, naturligvis. 541 00:31:59,150 --> 00:32:02,920 Men i dette tilfælde, alt, hvert datapunkt er denne tilstand 542 00:32:02,920 --> 00:32:05,420 og har en liste over breddegrader og længdegrader 543 00:32:05,420 --> 00:32:10,500 at definere polygon, den form, den tilstand. 544 00:32:10,500 --> 00:32:13,280 >> Så hvad D3 vil gøre ligner til hvad vi gjorde før. 545 00:32:13,280 --> 00:32:18,140 Det vil kræve, at og binde det til et element. 546 00:32:18,140 --> 00:32:20,890 Og der er en funktion, vil kortlægge dette element ud, 547 00:32:20,890 --> 00:32:23,410 på grundlag af de breddegrader og længdegrader. 548 00:32:23,410 --> 00:32:24,580 Du kan læse mere om det. 549 00:32:24,580 --> 00:32:27,385 Og jeg anbefale det. 550 00:32:27,385 --> 00:32:30,090 >> Der er links i slutningen af ​​denne kode bogført. 551 00:32:30,090 --> 00:32:31,570 Og koden er kommenteret. 552 00:32:31,570 --> 00:32:34,050 I der er links til yderligere på dette. 553 00:32:34,050 --> 00:32:36,590 Jeg vil anbefale dig at slå det op. 554 00:32:36,590 --> 00:32:39,460 Men det, vi holder af, er denne projektion funktion. 555 00:32:39,460 --> 00:32:41,210 Jeg ønsker at gå igennem det. 556 00:32:41,210 --> 00:32:43,522 >> Først og fremmest, lad mig vise Dem, ja, vi har et kort. 557 00:32:43,522 --> 00:32:47,300 558 00:32:47,300 --> 00:32:49,970 Maps er cool. 559 00:32:49,970 --> 00:32:52,330 Så lad os se på dette produktionsfunktion. 560 00:32:52,330 --> 00:32:56,481 >> Projektion er meget som en skala, skalaer igen. 561 00:32:56,481 --> 00:32:59,210 Så hvad produktion denne fremskrivning funktion 562 00:32:59,210 --> 00:33:06,610 gør er, kunne vi give det længdegrad og latitudes-- i dette tilfælde, 563 00:33:06,610 --> 00:33:09,590 disse værdier her er de lat-længes af bygningen 564 00:33:09,590 --> 00:33:13,990 vi sidder i højre nu-- til projektion. 565 00:33:13,990 --> 00:33:20,560 Og projektion vil konvertere at i x og y pixelværdier. 566 00:33:20,560 --> 00:33:23,300 >> Så hvad projektion gør er meget lig vores skala. 567 00:33:23,300 --> 00:33:27,270 Det tager vores breddegrader og længde, der repræsenterer hele kloden 568 00:33:27,270 --> 00:33:31,390 og krympning og dimensionering at ned til pladsen, som vi ønsker, 569 00:33:31,390 --> 00:33:33,510 at vi har givet det. 570 00:33:33,510 --> 00:33:35,220 I dette tilfælde er vi passerer disse værdier. 571 00:33:35,220 --> 00:33:41,370 Og det er at give os, godt, at på skærmen betyder 640 pixels. 572 00:33:41,370 --> 00:33:46,250 Hele denne skærm er 700 pixels bred, så det gør os om her, 573 00:33:46,250 --> 00:33:53,310 og 154 pixels ned, som jeg vil skøn er temmelig meget her. 574 00:33:53,310 --> 00:33:57,250 >> Så tager de lat-længes, som repræsentere noget på hele kloden 575 00:33:57,250 --> 00:34:02,850 og squishing og bevæger sig, at omkring at give os x og y pixelværdier, 576 00:34:02,850 --> 00:34:05,450 dette er den første ting, der er gjort i denne kortlægning kode. 577 00:34:05,450 --> 00:34:07,920 Og derefter resten af kode forbruger data 578 00:34:07,920 --> 00:34:14,310 og derefter kortlægger de lat-længes fat i noget på skærmen. 579 00:34:14,310 --> 00:34:18,380 >> Men vi kommer til at bruge denne fremskrivning funktioner, fordi det viser sig 580 00:34:18,380 --> 00:34:20,270 vi har lat-længes længes så godt. 581 00:34:20,270 --> 00:34:24,509 Ser tilbage på vores data, vi har breddegrader og længdegrader 582 00:34:24,509 --> 00:34:25,425 for hver observation. 583 00:34:25,425 --> 00:34:28,131 584 00:34:28,131 --> 00:34:29,130 Så lad os bruge projektion. 585 00:34:29,130 --> 00:34:33,250 586 00:34:33,250 --> 00:34:37,639 >> Så se på vores redegørelse, Vi ønsker, at vores exposition-- 587 00:34:37,639 --> 00:34:39,590 vi har en bredde og en længde. 588 00:34:39,590 --> 00:34:40,770 Men vi ønsker pixelværdier. 589 00:34:40,770 --> 00:34:43,510 Og det viser sig, har vi netop hvad vi want-- projektion. 590 00:34:43,510 --> 00:34:46,239 Meget ligesom vi var hjælp skala lige her, 591 00:34:46,239 --> 00:34:52,075 vi nu vil bruge projektion og videregive det koordinerer. 592 00:34:52,075 --> 00:34:55,241 593 00:34:55,241 --> 00:34:56,949 Så det første vi doing-- så vi er 594 00:34:56,949 --> 00:35:01,520 få d, som er en individuel data element af en individuel jordskælv 595 00:35:01,520 --> 00:35:02,370 læsning. 596 00:35:02,370 --> 00:35:04,640 Det første, vi gør er få koordinaterne. 597 00:35:04,640 --> 00:35:06,150 Okay, vi har koordinaterne. 598 00:35:06,150 --> 00:35:09,160 >> Det andet, vi gør, er videregive denne til projektion. 599 00:35:09,160 --> 00:35:13,440 Projection konverterer disse koordinater i pixelværdier, x og y. 600 00:35:13,440 --> 00:35:16,680 Og så det sidste, vi ønsker at gøre, er bare få x, 601 00:35:16,680 --> 00:35:19,342 som denne sag er den første. 602 00:35:19,342 --> 00:35:22,050 Det er den første af de to ting der returneres ved projektion. 603 00:35:22,050 --> 00:35:27,840 604 00:35:27,840 --> 00:35:29,630 >> Vi vil gøre det samme for y. 605 00:35:29,630 --> 00:35:34,960 Men i stedet vender vi tilbage det andet element, y. 606 00:35:34,960 --> 00:35:35,980 Gør dig klar til at opdatere. 607 00:35:35,980 --> 00:35:39,830 608 00:35:39,830 --> 00:35:46,450 Ooh, ekstra karakter her-- nice, vi har 609 00:35:46,450 --> 00:35:51,730 en database drevet dokument, der er skjule denne JSON fil af objekter, 610 00:35:51,730 --> 00:35:57,560 gør et kort, og ændre attribut i forhold til data 611 00:35:57,560 --> 00:35:59,600 at projicere det på et kort. 612 00:35:59,600 --> 00:36:00,840 Det er virkelig interessant. 613 00:36:00,840 --> 00:36:03,770 Det er cool. 614 00:36:03,770 --> 00:36:05,640 >> Lad os tage det op et hak. 615 00:36:05,640 --> 00:36:08,795 Jeg mener, vi har to stykker oplysninger med hver datapunkt. 616 00:36:08,795 --> 00:36:10,000 Jeg mener, tre. 617 00:36:10,000 --> 00:36:12,540 Vi har koordinaterne, som er en x og y. 618 00:36:12,540 --> 00:36:15,700 Og vi har størrelsen. 619 00:36:15,700 --> 00:36:17,420 >> Vi har brug for at indkode størrelsesorden eller anden måde. 620 00:36:17,420 --> 00:36:18,920 Vi har en masse kanaler. 621 00:36:18,920 --> 00:36:20,370 Vi kan bruge farver. 622 00:36:20,370 --> 00:36:21,890 Vi kan bruge radius. 623 00:36:21,890 --> 00:36:23,040 Vi kunne bruge opacitet. 624 00:36:23,040 --> 00:36:25,540 Vi kunne bruge mange ting i kode. 625 00:36:25,540 --> 00:36:29,180 Enhver af disse egenskaber og mange mere, som ikke er opført der, 626 00:36:29,180 --> 00:36:33,065 fordi de er valgfri, vi kunne bruge til at indkode disse data, slagtilfælde 627 00:36:33,065 --> 00:36:35,670 og alle disse ting, jeg har nævnt. 628 00:36:35,670 --> 00:36:36,690 >> Lad os gøre radius. 629 00:36:36,690 --> 00:36:38,830 Jeg tror radius er den mest intuitive. 630 00:36:38,830 --> 00:36:46,210 Så igen, vil vi erstatte det hard-kodet 40 og lave nogle beregninger. 631 00:36:46,210 --> 00:36:48,810 Vi bruger vores foretrukne skala igen. 632 00:36:48,810 --> 00:36:50,290 Og vi er forbi d. 633 00:36:50,290 --> 00:36:55,850 Men ikke d, fordi vi ønsker størrelsen af d. d er bare datapunkt. 634 00:36:55,850 --> 00:36:57,430 Vi vil videregive størrelsen til at skalere. 635 00:36:57,430 --> 00:36:58,470 >> Lad os prøve det igen. 636 00:36:58,470 --> 00:37:00,230 Ooh, virker det ikke. 637 00:37:00,230 --> 00:37:02,940 Hvorfor virker det ikke? 638 00:37:02,940 --> 00:37:04,387 >> Så husk hvad skala gør. 639 00:37:04,387 --> 00:37:05,470 Lad os se på skalaen igen. 640 00:37:05,470 --> 00:37:10,800 Målestokskort fra 1 til 10 på til 22-600, mere eller mindre. 641 00:37:10,800 --> 00:37:12,030 600 er enorm. 642 00:37:12,030 --> 00:37:14,730 Det er derfor, vi får det. 643 00:37:14,730 --> 00:37:18,420 >> Så vi ønsker at ændre vores målestok til noget mere fornuftigt. 644 00:37:18,420 --> 00:37:22,610 Lad os sige, vi ønsker fra 0 til 60. 645 00:37:22,610 --> 00:37:25,340 60 er stor, men 10 jordskælv er utroligt sjældne. 646 00:37:25,340 --> 00:37:27,880 Faktisk har de aldrig sket. 647 00:37:27,880 --> 00:37:31,830 >> Så hvad det vil gøre, er, vil det tage vores størrelse, der går fra 1 til 10 648 00:37:31,830 --> 00:37:34,490 og kortlægge det på at udvide det. 649 00:37:34,490 --> 00:37:37,370 Og kort den på fra 0 til 60. 650 00:37:37,370 --> 00:37:38,840 Lad os genopfriske. 651 00:37:38,840 --> 00:37:41,850 >> Nice, har vi en visualisering. 652 00:37:41,850 --> 00:37:42,500 Det er fantastisk. 653 00:37:42,500 --> 00:37:43,736 Dette er faktiske data. 654 00:37:43,736 --> 00:37:46,360 Du vil opdage, i min lille legetøj eksempel den største jordskælv 655 00:37:46,360 --> 00:37:49,417 er lige på toppen af ​​os. 656 00:37:49,417 --> 00:37:50,000 Men det er det. 657 00:37:50,000 --> 00:37:54,422 Vi har en dato drevet visualisering der bruger data 658 00:37:54,422 --> 00:37:56,255 og giver os virkelig interessante oplysninger. 659 00:37:56,255 --> 00:38:02,600 660 00:38:02,600 --> 00:38:06,420 Ja, lad os tilføje nogle interaktivitet til det. 661 00:38:06,420 --> 00:38:08,675 Jeg nævnte det var den stærke kraft D3. 662 00:38:08,675 --> 00:38:11,490 663 00:38:11,490 --> 00:38:15,060 >> Så her, for hvert element, vi er beskriver en flok attributter. 664 00:38:15,060 --> 00:38:20,230 Men vi kan også beskrive, hvad vi ønsker ske med interaktivitet elementer. 665 00:38:20,230 --> 00:38:26,190 For eksempel kunne vi beskrive hvad der sker når vi musen over. 666 00:38:26,190 --> 00:38:28,740 667 00:38:28,740 --> 00:38:33,640 Og meget lig det, der vil tage en funktion, 668 00:38:33,640 --> 00:38:36,700 meget lig den attributter, vi havde før, 669 00:38:36,700 --> 00:38:44,650 hvor vi gør noget til element, når vi svæver over det. 670 00:38:44,650 --> 00:38:47,100 >> Så første ting, vi har brug for at gøre er at vælge det element, 671 00:38:47,100 --> 00:38:49,435 at finde det dybest set, i browseren. 672 00:38:49,435 --> 00:38:57,090 673 00:38:57,090 --> 00:39:00,920 og derefter kunne vi sat en attribut til den. 674 00:39:00,920 --> 00:39:06,870 Så hvad jeg laver her er, når vi hover over noget, vil vi få dette element 675 00:39:06,870 --> 00:39:11,197 og derefter indstille sin uigennemsigtighed tilbage 1, til fuldstændig uigennemsigtig. 676 00:39:11,197 --> 00:39:12,488 Lad os se hvad der ligner. 677 00:39:12,488 --> 00:39:29,430 678 00:39:29,430 --> 00:39:39,080 >> Det ser vi har en ekstra semikolon her. 679 00:39:39,080 --> 00:39:42,420 Så hvis vi svæve over her, det får fuld. 680 00:39:42,420 --> 00:39:46,530 681 00:39:46,530 --> 00:39:48,960 Men nu, selvfølgelig, det forbliver fuldt ud, fordi vi 682 00:39:48,960 --> 00:39:53,240 nødt til at beskrive, hvad der sker når fjerne vores markør. 683 00:39:53,240 --> 00:39:59,990 Så lad os gøre netop det på mouseout, i modsætning til mouseover. 684 00:39:59,990 --> 00:40:06,399 >> Og vi vil nulstille den til hvad vi havde before-- 0.5. 685 00:40:06,399 --> 00:40:10,260 Og nu, hver gang vi hover, får vi en fuld cirkel. 686 00:40:10,260 --> 00:40:13,468 Det hjælper os med at se, hvad vi vi vælge det væsentlige. 687 00:40:13,468 --> 00:40:19,210 688 00:40:19,210 --> 00:40:22,860 >> Og lad os nu gøre dette virkelig stor. 689 00:40:22,860 --> 00:40:26,210 Lad os slutte dette til reelle data. 690 00:40:26,210 --> 00:40:30,890 Så lad os bede kunne USGS om deres data. 691 00:40:30,890 --> 00:40:35,630 Så US Geological Survey har data om jordskælv. 692 00:40:35,630 --> 00:40:41,460 De har en offentlig API, der er i stand til forbrug i JSON format. 693 00:40:41,460 --> 00:40:42,548 Så lad os gøre det. 694 00:40:42,548 --> 00:40:49,730 695 00:40:49,730 --> 00:40:55,900 >> Så dette er lidt af kode, forbindelse til USGS API. 696 00:40:55,900 --> 00:40:57,990 Og der er lidt af behandling på det. 697 00:40:57,990 --> 00:41:02,200 Dette er ikke relevant, men forenkler det til en simpel data format som den 698 00:41:02,200 --> 00:41:03,800 vi havde før. 699 00:41:03,800 --> 00:41:08,140 Så jeg slippe af med vores opfordring til vores falske data.json på filen. 700 00:41:08,140 --> 00:41:13,110 Og i stedet, jeg ringer USGS væsentlige. 701 00:41:13,110 --> 00:41:16,700 >> Lad os genopfriske, nice. 702 00:41:16,700 --> 00:41:21,260 Dette er reelle, virkelige data fra denne uge for jordskælv. 703 00:41:21,260 --> 00:41:23,217 Det er virkelig interessant. 704 00:41:23,217 --> 00:41:25,050 Dette er ikke overraskende for os, men der er 705 00:41:25,050 --> 00:41:27,909 en masse af jordskælv på West Coast i Californien. 706 00:41:27,909 --> 00:41:30,950 Men jeg troede, det var meget interessant at der var så mange jordskælv 707 00:41:30,950 --> 00:41:34,350 i Alaska, og tilsyneladende her i Midtvesten. 708 00:41:34,350 --> 00:41:37,630 Jeg mener, interessant, og vi er gode. 709 00:41:37,630 --> 00:41:40,410 Det er konklusionen. 710 00:41:40,410 --> 00:41:43,760 >> Men fundamentalt, dette er det, D3 hjælper os gøre. 711 00:41:43,760 --> 00:41:48,030 Det hjælper os tage data, binder det til elementer i DOM, 712 00:41:48,030 --> 00:41:51,620 og få disse elementer ændrer som en funktion af de data, 713 00:41:51,620 --> 00:41:54,780 har disse attributter, alle de mange attributter af elementerne, 714 00:41:54,780 --> 00:41:57,393 alle være nyttige til kanaler at formidle information. 715 00:41:57,393 --> 00:42:05,440 716 00:42:05,440 --> 00:42:09,290 >> D3 er en utrolig kraftfuld bibliotek og forbavsende godt køre. 717 00:42:09,290 --> 00:42:12,260 Det er nogle kraftige ting. 718 00:42:12,260 --> 00:42:15,960 Datavisualisering er en utroligt stærkt værktøj 719 00:42:15,960 --> 00:42:21,530 til transport til folk dybe indsigt, der får til deres kerne 720 00:42:21,530 --> 00:42:25,430 og hjælper dem til at forstå, i denne dybe og intuitiv måde, 721 00:42:25,430 --> 00:42:29,760 hvordan data fungerer, og hvordan data ændrer vores liv. 722 00:42:29,760 --> 00:42:31,019