liwenbiao
jianjian 2 years ago
parent 1594d97d32
commit 478548cb8a

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,31 @@
Rk,Team,G,MP,FG,FGA,FG%,3P,3PA,3P%,2P,2PA,2P%,FT,FTA,FT%,ORB,DRB,TRB,AST,STL,BLK,TOV,PF,PTS
1,Golden State Warriors,82,242.4,42.5,87.3,0.487,13.1,31.6,0.416,29.4,55.7,0.528,16.7,21.8,0.763,10,36.2,46.2,28.9,8.4,6.1,15.2,20.7,114.9
2,Oklahoma City Thunder,82,241.8,41.1,86.4,0.476,8.3,23.7,0.349,32.9,62.6,0.524,19.7,25.2,0.782,13.1,35.6,48.6,23,7.4,5.9,15.9,20.6,110.2
3,Sacramento Kings,82,241.5,40,86.4,0.464,8,22.4,0.359,32,64,0.5,18.5,25.5,0.725,10.6,33.7,44.2,24.5,8.9,4.5,16.2,20.4,106.6
4,Houston Rockets,82,241.8,37.7,83.5,0.452,10.7,30.9,0.347,27,52.6,0.514,20.4,29.4,0.694,11.3,31.7,43.1,22.2,10,5.2,15.9,21.8,106.5
5,Boston Celtics,82,241.2,39.2,89.2,0.439,8.7,26.1,0.335,30.5,63.1,0.483,18.5,23.5,0.788,11.6,33.3,44.9,24.2,9.2,4.2,13.7,21.9,105.7
6,Portland Trail Blazers,82,241.5,38.6,85.9,0.45,10.5,28.5,0.37,28.1,57.4,0.49,17.4,23,0.754,11.6,33.9,45.5,21.3,6.9,4.6,14.6,21.7,105.1
7,Los Angeles Clippers,82,241.8,38.3,82.4,0.465,9.7,26.7,0.364,28.6,55.7,0.513,18.2,26.2,0.692,8.8,33.3,42,22.8,8.6,5.6,13,21.3,104.5
8,Cleveland Cavaliers,82,242.1,38.7,84,0.46,10.7,29.6,0.362,27.9,54.4,0.514,16.3,21.7,0.748,10.6,33.9,44.5,22.7,6.7,3.9,13.6,20.3,104.3
9,Washington Wizards,82,240.9,39.5,85.8,0.46,8.6,24.2,0.358,30.8,61.6,0.501,16.5,22.5,0.73,9.1,32.8,41.8,24.5,8.6,3.9,14.5,20.8,104.1
10,San Antonio Spurs,82,240.3,40.1,82.9,0.484,7,18.5,0.375,33.2,64.4,0.515,16.4,20.4,0.803,9.4,34.5,43.9,24.5,8.3,5.9,13.1,17.5,103.5
11,Charlotte Hornets,82,242.1,37,84.4,0.439,10.6,29.4,0.362,26.4,55,0.479,18.7,23.7,0.79,9,35,43.9,21.7,7.3,5.3,12.6,18.1,103.4
12,Atlanta Hawks,82,241.8,38.6,84.4,0.458,9.9,28.4,0.35,28.7,56.1,0.512,15.6,20,0.783,8.3,33.8,42.1,25.6,9.1,5.9,15,19.1,102.8
13,New Orleans Pelicans,82,241.2,38.5,85.9,0.448,8.6,23.8,0.36,29.9,62.1,0.482,17.3,22.2,0.776,9.5,33.1,42.6,22.2,7.7,4.2,13.4,20.9,102.7
14,Toronto Raptors,82,241.2,36.7,81.3,0.451,8.6,23.4,0.37,28,58,0.483,20.8,26.7,0.777,10.2,33.2,43.4,18.7,7.8,5.5,13.1,19.6,102.7
15,Minnesota Timberwolves,82,242.4,37.7,81.3,0.464,5.5,16.4,0.338,32.2,64.9,0.496,21.4,27,0.792,10,31.5,41.6,23.4,8,4.6,15,20.7,102.4
16,Dallas Mavericks,82,244,37.4,84.1,0.444,9.8,28.6,0.344,27.5,55.6,0.495,17.7,22.3,0.794,9.2,33.9,43.1,22.1,6.8,3.7,12.8,19.5,102.3
17,Indiana Pacers,82,242.4,38.3,85.2,0.45,8.1,23,0.351,30.2,62.1,0.486,17.4,22.8,0.764,10.3,33.9,44.2,21.2,9,4.8,14.9,20,102.2
18,Orlando Magic,82,242.7,39.5,86.8,0.455,7.8,22.2,0.35,31.8,64.7,0.492,15.2,20.1,0.757,10.3,33,43.3,23.6,8.2,5.1,14.1,20.7,102.1
19,Detroit Pistons,82,242.4,37.9,86.4,0.439,9,26.2,0.345,28.9,60.2,0.48,17.1,25.5,0.668,12.5,33.9,46.3,19.4,7,3.7,13.5,19,102
20,Denver Nuggets,82,241.8,37.7,85.4,0.442,8,23.7,0.338,29.7,61.7,0.482,18.5,24.1,0.766,11.5,33.1,44.6,22.7,7.4,4.8,14.7,21,101.9
21,Chicago Bulls,82,242.7,38.6,87.4,0.441,7.9,21.4,0.371,30.7,66.1,0.464,16.5,21,0.787,11.1,35.2,46.3,22.8,6,5.7,13.9,18.8,101.6
22,Phoenix Suns,82,240.3,37.2,85.6,0.435,9,25.8,0.348,28.2,59.8,0.472,17.5,23.2,0.751,11.5,33.3,44.8,20.7,7.7,3.8,17.2,22.7,100.9
23,Miami Heat,82,241.8,38.4,81.7,0.47,6.1,18,0.336,32.3,63.6,0.508,17.1,23,0.744,9.8,34.3,44.1,20.8,6.7,6.5,14.1,18.3,100
24,Memphis Grizzlies,82,241.8,36.8,83.6,0.44,6.1,18.5,0.331,30.7,65.1,0.471,19.3,24.7,0.783,11.2,30.5,41.6,20.7,8.8,4.3,13.3,21.7,99.1
25,Milwaukee Bucks,82,241.8,38.4,82.2,0.467,5.4,15.6,0.345,33,66.6,0.495,17,22.7,0.747,10.5,31.2,41.7,23.1,8.2,5.8,15.2,20.7,99
26,Brooklyn Nets,82,240.9,38.2,84.4,0.453,6.5,18.4,0.352,31.8,66,0.481,15.7,20.7,0.757,10.5,31.9,42.4,22.3,7.6,4,14.8,18,98.6
27,New York Knicks,82,241.5,36.9,84,0.439,7.4,21.5,0.346,29.4,62.5,0.471,17.2,21.4,0.805,10.4,34,44.4,20.5,5.7,5.7,13.4,19.7,98.4
28,Utah Jazz,82,243.4,36.1,80.4,0.449,8.5,23.9,0.355,27.6,56.5,0.488,17.1,23,0.744,10.7,32.5,43.2,19,7.7,5.2,14.9,20.2,97.7
29,Philadelphia 76ers,82,241.5,36.2,84,0.431,9.3,27.5,0.339,26.9,56.5,0.476,15.7,22.6,0.694,9.5,31.8,41.2,21.5,8.3,6,16.4,21.7,97.4
30,Los Angeles Lakers,82,240.6,35.1,84.8,0.414,7.8,24.6,0.317,27.3,60.2,0.454,19.3,24.7,0.781,10.7,32.3,43,18,7.2,4.1,13.7,20.3,97.3
1 Rk Team G MP FG FGA FG% 3P 3PA 3P% 2P 2PA 2P% FT FTA FT% ORB DRB TRB AST STL BLK TOV PF PTS
2 1 Golden State Warriors 82 242.4 42.5 87.3 0.487 13.1 31.6 0.416 29.4 55.7 0.528 16.7 21.8 0.763 10 36.2 46.2 28.9 8.4 6.1 15.2 20.7 114.9
3 2 Oklahoma City Thunder 82 241.8 41.1 86.4 0.476 8.3 23.7 0.349 32.9 62.6 0.524 19.7 25.2 0.782 13.1 35.6 48.6 23 7.4 5.9 15.9 20.6 110.2
4 3 Sacramento Kings 82 241.5 40 86.4 0.464 8 22.4 0.359 32 64 0.5 18.5 25.5 0.725 10.6 33.7 44.2 24.5 8.9 4.5 16.2 20.4 106.6
5 4 Houston Rockets 82 241.8 37.7 83.5 0.452 10.7 30.9 0.347 27 52.6 0.514 20.4 29.4 0.694 11.3 31.7 43.1 22.2 10 5.2 15.9 21.8 106.5
6 5 Boston Celtics 82 241.2 39.2 89.2 0.439 8.7 26.1 0.335 30.5 63.1 0.483 18.5 23.5 0.788 11.6 33.3 44.9 24.2 9.2 4.2 13.7 21.9 105.7
7 6 Portland Trail Blazers 82 241.5 38.6 85.9 0.45 10.5 28.5 0.37 28.1 57.4 0.49 17.4 23 0.754 11.6 33.9 45.5 21.3 6.9 4.6 14.6 21.7 105.1
8 7 Los Angeles Clippers 82 241.8 38.3 82.4 0.465 9.7 26.7 0.364 28.6 55.7 0.513 18.2 26.2 0.692 8.8 33.3 42 22.8 8.6 5.6 13 21.3 104.5
9 8 Cleveland Cavaliers 82 242.1 38.7 84 0.46 10.7 29.6 0.362 27.9 54.4 0.514 16.3 21.7 0.748 10.6 33.9 44.5 22.7 6.7 3.9 13.6 20.3 104.3
10 9 Washington Wizards 82 240.9 39.5 85.8 0.46 8.6 24.2 0.358 30.8 61.6 0.501 16.5 22.5 0.73 9.1 32.8 41.8 24.5 8.6 3.9 14.5 20.8 104.1
11 10 San Antonio Spurs 82 240.3 40.1 82.9 0.484 7 18.5 0.375 33.2 64.4 0.515 16.4 20.4 0.803 9.4 34.5 43.9 24.5 8.3 5.9 13.1 17.5 103.5
12 11 Charlotte Hornets 82 242.1 37 84.4 0.439 10.6 29.4 0.362 26.4 55 0.479 18.7 23.7 0.79 9 35 43.9 21.7 7.3 5.3 12.6 18.1 103.4
13 12 Atlanta Hawks 82 241.8 38.6 84.4 0.458 9.9 28.4 0.35 28.7 56.1 0.512 15.6 20 0.783 8.3 33.8 42.1 25.6 9.1 5.9 15 19.1 102.8
14 13 New Orleans Pelicans 82 241.2 38.5 85.9 0.448 8.6 23.8 0.36 29.9 62.1 0.482 17.3 22.2 0.776 9.5 33.1 42.6 22.2 7.7 4.2 13.4 20.9 102.7
15 14 Toronto Raptors 82 241.2 36.7 81.3 0.451 8.6 23.4 0.37 28 58 0.483 20.8 26.7 0.777 10.2 33.2 43.4 18.7 7.8 5.5 13.1 19.6 102.7
16 15 Minnesota Timberwolves 82 242.4 37.7 81.3 0.464 5.5 16.4 0.338 32.2 64.9 0.496 21.4 27 0.792 10 31.5 41.6 23.4 8 4.6 15 20.7 102.4
17 16 Dallas Mavericks 82 244 37.4 84.1 0.444 9.8 28.6 0.344 27.5 55.6 0.495 17.7 22.3 0.794 9.2 33.9 43.1 22.1 6.8 3.7 12.8 19.5 102.3
18 17 Indiana Pacers 82 242.4 38.3 85.2 0.45 8.1 23 0.351 30.2 62.1 0.486 17.4 22.8 0.764 10.3 33.9 44.2 21.2 9 4.8 14.9 20 102.2
19 18 Orlando Magic 82 242.7 39.5 86.8 0.455 7.8 22.2 0.35 31.8 64.7 0.492 15.2 20.1 0.757 10.3 33 43.3 23.6 8.2 5.1 14.1 20.7 102.1
20 19 Detroit Pistons 82 242.4 37.9 86.4 0.439 9 26.2 0.345 28.9 60.2 0.48 17.1 25.5 0.668 12.5 33.9 46.3 19.4 7 3.7 13.5 19 102
21 20 Denver Nuggets 82 241.8 37.7 85.4 0.442 8 23.7 0.338 29.7 61.7 0.482 18.5 24.1 0.766 11.5 33.1 44.6 22.7 7.4 4.8 14.7 21 101.9
22 21 Chicago Bulls 82 242.7 38.6 87.4 0.441 7.9 21.4 0.371 30.7 66.1 0.464 16.5 21 0.787 11.1 35.2 46.3 22.8 6 5.7 13.9 18.8 101.6
23 22 Phoenix Suns 82 240.3 37.2 85.6 0.435 9 25.8 0.348 28.2 59.8 0.472 17.5 23.2 0.751 11.5 33.3 44.8 20.7 7.7 3.8 17.2 22.7 100.9
24 23 Miami Heat 82 241.8 38.4 81.7 0.47 6.1 18 0.336 32.3 63.6 0.508 17.1 23 0.744 9.8 34.3 44.1 20.8 6.7 6.5 14.1 18.3 100
25 24 Memphis Grizzlies 82 241.8 36.8 83.6 0.44 6.1 18.5 0.331 30.7 65.1 0.471 19.3 24.7 0.783 11.2 30.5 41.6 20.7 8.8 4.3 13.3 21.7 99.1
26 25 Milwaukee Bucks 82 241.8 38.4 82.2 0.467 5.4 15.6 0.345 33 66.6 0.495 17 22.7 0.747 10.5 31.2 41.7 23.1 8.2 5.8 15.2 20.7 99
27 26 Brooklyn Nets 82 240.9 38.2 84.4 0.453 6.5 18.4 0.352 31.8 66 0.481 15.7 20.7 0.757 10.5 31.9 42.4 22.3 7.6 4 14.8 18 98.6
28 27 New York Knicks 82 241.5 36.9 84 0.439 7.4 21.5 0.346 29.4 62.5 0.471 17.2 21.4 0.805 10.4 34 44.4 20.5 5.7 5.7 13.4 19.7 98.4
29 28 Utah Jazz 82 243.4 36.1 80.4 0.449 8.5 23.9 0.355 27.6 56.5 0.488 17.1 23 0.744 10.7 32.5 43.2 19 7.7 5.2 14.9 20.2 97.7
30 29 Philadelphia 76ers 82 241.5 36.2 84 0.431 9.3 27.5 0.339 26.9 56.5 0.476 15.7 22.6 0.694 9.5 31.8 41.2 21.5 8.3 6 16.4 21.7 97.4
31 30 Los Angeles Lakers 82 240.6 35.1 84.8 0.414 7.8 24.6 0.317 27.3 60.2 0.454 19.3 24.7 0.781 10.7 32.3 43 18 7.2 4.1 13.7 20.3 97.3

@ -0,0 +1,31 @@
Rk,Team,G,MP,FG,FGA,FG%,3P,3PA,3P%,2P,2PA,2P%,FT,FTA,FT%,ORB,DRB,TRB,AST,STL,BLK,TOV,PF,PTS
1,San Antonio Spurs,82,240.3,35.7,81.8,0.436,6.6,19.9,0.331,29.1,61.9,0.47,14.9,19.6,0.758,9.1,31.4,40.5,20.8,7.2,3.9,14.8,19.5,92.9
2,Utah Jazz,82,243.4,35.6,79.9,0.446,7.9,22.2,0.357,27.7,57.7,0.48,16.8,22.5,0.746,9.3,30.8,40.1,19.1,8,4.7,14,19.9,95.9
3,Toronto Raptors,82,241.2,36.5,82.1,0.444,8.7,23.4,0.373,27.7,58.7,0.473,16.5,22.1,0.748,9.5,31.2,40.8,21.7,6.5,5.4,13.3,22,98.2
4,Cleveland Cavaliers,82,242.1,36.8,82.1,0.448,7.9,22.7,0.347,28.9,59.4,0.487,16.8,22.6,0.743,9.3,31.8,41,21.4,7.2,4.4,13.3,20.6,98.3
5,Miami Heat,82,241.8,37.2,84.3,0.442,7.4,21.2,0.347,29.9,63.1,0.474,16.5,21.5,0.77,9.8,31.5,41.3,20.2,7.5,4.1,12.9,19.6,98.4
6,Atlanta Hawks,82,241.8,37.1,86.1,0.432,8.3,24.5,0.338,28.9,61.6,0.469,16.7,22.1,0.755,11.5,35,46.5,22,8.6,5,16.1,18.3,99.2
7,Los Angeles Clippers,82,241.8,36.8,84.7,0.434,7.9,23.3,0.338,28.9,61.4,0.471,18.8,25.1,0.751,11.8,34.9,46.7,21.2,7.1,3.2,15.4,22.5,100.2
8,Indiana Pacers,82,242.4,37.4,84.9,0.44,8.3,24.8,0.334,29.1,60.1,0.484,17.4,23.2,0.751,10.7,33.8,44.5,20.8,7.7,4.5,15.8,20.4,100.5
9,Charlotte Hornets,82,242.1,37.8,85,0.444,8.9,25.4,0.349,28.9,59.6,0.485,16.3,21.2,0.769,8.9,35.8,44.7,23.2,6.7,5.5,13.5,20.4,100.7
10,New York Knicks,82,241.5,38,85.8,0.443,7.6,22.4,0.341,30.3,63.4,0.479,17.5,23.2,0.754,10.9,33.3,44.2,20.8,7.2,4.2,11.3,18.5,101.1
11,Memphis Grizzlies,82,241.8,35.9,78.8,0.456,9.7,26.6,0.365,26.2,52.1,0.503,19.7,25.7,0.768,10.1,33.1,43.2,21.9,7,5.7,16.2,21.1,101.3
12,Detroit Pistons,82,242.4,38.8,84.2,0.461,7.3,20.5,0.355,31.5,63.7,0.495,16.5,21,0.783,8.8,33.7,42.5,21.5,7.1,4.5,13.4,21.6,101.4
13,Boston Celtics,82,241.2,37.5,85,0.441,7.8,23.3,0.336,29.7,61.7,0.481,19.7,26,0.755,11.4,34.6,46,20.9,7.6,5.5,16.4,21,102.5
14,Dallas Mavericks,82,244,38.3,85,0.451,9.1,26.5,0.342,29.3,58.5,0.5,16.9,22.8,0.738,10.6,35.2,45.8,22,7.5,4.4,13.9,21.4,102.6
15,Oklahoma City Thunder,82,241.8,38.4,87.7,0.438,8.1,23.8,0.342,30.3,63.9,0.474,18,23.8,0.756,11.3,28.9,40.2,21.5,8.8,4.5,13,20.2,102.9
16,Chicago Bulls,82,242.7,39.4,89.4,0.441,7.9,23,0.345,31.5,66.4,0.474,16.3,22.1,0.737,11.8,34.1,45.9,22.5,8,5.7,11.9,18.7,103.1
17,Milwaukee Bucks,82,241.8,37.8,83.1,0.454,9.3,26.5,0.352,28.4,56.7,0.502,18.4,23.9,0.768,11.5,31.5,43,24.5,8.3,5.6,15.5,19.5,103.2
18,Orlando Magic,82,242.7,38.4,83.5,0.46,8.9,24.9,0.359,29.5,58.6,0.503,17.9,24,0.746,10.1,34.1,44.3,23.2,7.6,5.5,15.1,18.3,103.7
19,Golden State Warriors,82,242.4,38.9,89.4,0.435,7.8,23.5,0.332,31.1,65.9,0.472,18.6,24.5,0.757,11.4,32.5,43.9,22.2,8.7,4.1,14.5,19.8,104.1
20,Portland Trail Blazers*,82,241.5,38.4,84.7,0.453,8.5,23,0.371,29.8,61.7,0.484,19,26,0.734,10.6,33.1,43.7,21.6,7.7,5.2,13.3,19.5,104.3
21,Washington Wizards,82,240.9,38.7,83.8,0.462,9,24.2,0.371,29.7,59.5,0.498,18.3,23.7,0.769,9.4,34.9,44.3,22.5,8.1,4.3,16.2,20.1,104.6
22,Denver Nuggets,82,241.8,38.8,84.2,0.461,9.2,24.8,0.371,29.6,59.4,0.498,18.2,23.9,0.761,9.7,32.9,42.7,23.5,8,6.3,13.7,20.9,105
23,Minnesota Timberwolves,82,242.4,40,84.9,0.471,9,25.5,0.355,30.9,59.4,0.52,17,22.5,0.757,10.7,31.2,41.9,22.6,7.8,5.2,14.9,21.6,106
24,Brooklyn Nets,82,240.9,40.8,85.2,0.479,9.5,25.6,0.369,31.3,59.6,0.526,15,19.6,0.763,10.2,33.2,43.4,24.5,8.8,5.2,14.2,18.4,106
25,Houston Rockets,82,241.8,39,85.1,0.459,9.7,26.9,0.361,29.3,58.2,0.504,18.6,24.6,0.756,11.8,32.8,44.6,24.6,9,4.9,16.6,22.5,106.4
26,New Orleans Pelicans,82,241.2,39.2,83.9,0.468,9.2,24.9,0.369,30,59,0.51,18.8,24,0.783,8.9,35.5,44.4,23.2,7.3,5.2,13.7,19.9,106.5
27,Los Angeles Lakers,82,240.6,40.5,85.6,0.473,8.5,24.6,0.347,32,61.1,0.524,17.3,23.7,0.731,10.9,35.5,46.5,24.7,7.5,5.6,12.6,19.2,106.9
28,Phoenix Suns,82,240.3,39.1,83.8,0.467,9.4,24.9,0.377,29.7,58.9,0.505,19.9,26.5,0.749,9.9,33.8,43.7,22.4,9.5,5.5,14.9,21.6,107.5
29,Philadelphia 76ers,82,241.5,39.7,85.4,0.464,7.8,21.7,0.359,31.9,63.8,0.5,20.5,26.1,0.786,11.1,36.4,47.6,23.4,8.7,5.7,15.1,19.2,107.6
30,Sacramento Kings,82,241.5,40.6,87.7,0.462,10.2,28,0.366,30.3,59.8,0.508,17.7,23.2,0.762,11.3,33.7,45,24.2,8.8,5.3,16,22,109.1
1 Rk Team G MP FG FGA FG% 3P 3PA 3P% 2P 2PA 2P% FT FTA FT% ORB DRB TRB AST STL BLK TOV PF PTS
2 1 San Antonio Spurs 82 240.3 35.7 81.8 0.436 6.6 19.9 0.331 29.1 61.9 0.47 14.9 19.6 0.758 9.1 31.4 40.5 20.8 7.2 3.9 14.8 19.5 92.9
3 2 Utah Jazz 82 243.4 35.6 79.9 0.446 7.9 22.2 0.357 27.7 57.7 0.48 16.8 22.5 0.746 9.3 30.8 40.1 19.1 8 4.7 14 19.9 95.9
4 3 Toronto Raptors 82 241.2 36.5 82.1 0.444 8.7 23.4 0.373 27.7 58.7 0.473 16.5 22.1 0.748 9.5 31.2 40.8 21.7 6.5 5.4 13.3 22 98.2
5 4 Cleveland Cavaliers 82 242.1 36.8 82.1 0.448 7.9 22.7 0.347 28.9 59.4 0.487 16.8 22.6 0.743 9.3 31.8 41 21.4 7.2 4.4 13.3 20.6 98.3
6 5 Miami Heat 82 241.8 37.2 84.3 0.442 7.4 21.2 0.347 29.9 63.1 0.474 16.5 21.5 0.77 9.8 31.5 41.3 20.2 7.5 4.1 12.9 19.6 98.4
7 6 Atlanta Hawks 82 241.8 37.1 86.1 0.432 8.3 24.5 0.338 28.9 61.6 0.469 16.7 22.1 0.755 11.5 35 46.5 22 8.6 5 16.1 18.3 99.2
8 7 Los Angeles Clippers 82 241.8 36.8 84.7 0.434 7.9 23.3 0.338 28.9 61.4 0.471 18.8 25.1 0.751 11.8 34.9 46.7 21.2 7.1 3.2 15.4 22.5 100.2
9 8 Indiana Pacers 82 242.4 37.4 84.9 0.44 8.3 24.8 0.334 29.1 60.1 0.484 17.4 23.2 0.751 10.7 33.8 44.5 20.8 7.7 4.5 15.8 20.4 100.5
10 9 Charlotte Hornets 82 242.1 37.8 85 0.444 8.9 25.4 0.349 28.9 59.6 0.485 16.3 21.2 0.769 8.9 35.8 44.7 23.2 6.7 5.5 13.5 20.4 100.7
11 10 New York Knicks 82 241.5 38 85.8 0.443 7.6 22.4 0.341 30.3 63.4 0.479 17.5 23.2 0.754 10.9 33.3 44.2 20.8 7.2 4.2 11.3 18.5 101.1
12 11 Memphis Grizzlies 82 241.8 35.9 78.8 0.456 9.7 26.6 0.365 26.2 52.1 0.503 19.7 25.7 0.768 10.1 33.1 43.2 21.9 7 5.7 16.2 21.1 101.3
13 12 Detroit Pistons 82 242.4 38.8 84.2 0.461 7.3 20.5 0.355 31.5 63.7 0.495 16.5 21 0.783 8.8 33.7 42.5 21.5 7.1 4.5 13.4 21.6 101.4
14 13 Boston Celtics 82 241.2 37.5 85 0.441 7.8 23.3 0.336 29.7 61.7 0.481 19.7 26 0.755 11.4 34.6 46 20.9 7.6 5.5 16.4 21 102.5
15 14 Dallas Mavericks 82 244 38.3 85 0.451 9.1 26.5 0.342 29.3 58.5 0.5 16.9 22.8 0.738 10.6 35.2 45.8 22 7.5 4.4 13.9 21.4 102.6
16 15 Oklahoma City Thunder 82 241.8 38.4 87.7 0.438 8.1 23.8 0.342 30.3 63.9 0.474 18 23.8 0.756 11.3 28.9 40.2 21.5 8.8 4.5 13 20.2 102.9
17 16 Chicago Bulls 82 242.7 39.4 89.4 0.441 7.9 23 0.345 31.5 66.4 0.474 16.3 22.1 0.737 11.8 34.1 45.9 22.5 8 5.7 11.9 18.7 103.1
18 17 Milwaukee Bucks 82 241.8 37.8 83.1 0.454 9.3 26.5 0.352 28.4 56.7 0.502 18.4 23.9 0.768 11.5 31.5 43 24.5 8.3 5.6 15.5 19.5 103.2
19 18 Orlando Magic 82 242.7 38.4 83.5 0.46 8.9 24.9 0.359 29.5 58.6 0.503 17.9 24 0.746 10.1 34.1 44.3 23.2 7.6 5.5 15.1 18.3 103.7
20 19 Golden State Warriors 82 242.4 38.9 89.4 0.435 7.8 23.5 0.332 31.1 65.9 0.472 18.6 24.5 0.757 11.4 32.5 43.9 22.2 8.7 4.1 14.5 19.8 104.1
21 20 Portland Trail Blazers* 82 241.5 38.4 84.7 0.453 8.5 23 0.371 29.8 61.7 0.484 19 26 0.734 10.6 33.1 43.7 21.6 7.7 5.2 13.3 19.5 104.3
22 21 Washington Wizards 82 240.9 38.7 83.8 0.462 9 24.2 0.371 29.7 59.5 0.498 18.3 23.7 0.769 9.4 34.9 44.3 22.5 8.1 4.3 16.2 20.1 104.6
23 22 Denver Nuggets 82 241.8 38.8 84.2 0.461 9.2 24.8 0.371 29.6 59.4 0.498 18.2 23.9 0.761 9.7 32.9 42.7 23.5 8 6.3 13.7 20.9 105
24 23 Minnesota Timberwolves 82 242.4 40 84.9 0.471 9 25.5 0.355 30.9 59.4 0.52 17 22.5 0.757 10.7 31.2 41.9 22.6 7.8 5.2 14.9 21.6 106
25 24 Brooklyn Nets 82 240.9 40.8 85.2 0.479 9.5 25.6 0.369 31.3 59.6 0.526 15 19.6 0.763 10.2 33.2 43.4 24.5 8.8 5.2 14.2 18.4 106
26 25 Houston Rockets 82 241.8 39 85.1 0.459 9.7 26.9 0.361 29.3 58.2 0.504 18.6 24.6 0.756 11.8 32.8 44.6 24.6 9 4.9 16.6 22.5 106.4
27 26 New Orleans Pelicans 82 241.2 39.2 83.9 0.468 9.2 24.9 0.369 30 59 0.51 18.8 24 0.783 8.9 35.5 44.4 23.2 7.3 5.2 13.7 19.9 106.5
28 27 Los Angeles Lakers 82 240.6 40.5 85.6 0.473 8.5 24.6 0.347 32 61.1 0.524 17.3 23.7 0.731 10.9 35.5 46.5 24.7 7.5 5.6 12.6 19.2 106.9
29 28 Phoenix Suns 82 240.3 39.1 83.8 0.467 9.4 24.9 0.377 29.7 58.9 0.505 19.9 26.5 0.749 9.9 33.8 43.7 22.4 9.5 5.5 14.9 21.6 107.5
30 29 Philadelphia 76ers 82 241.5 39.7 85.4 0.464 7.8 21.7 0.359 31.9 63.8 0.5 20.5 26.1 0.786 11.1 36.4 47.6 23.4 8.7 5.7 15.1 19.2 107.6
31 30 Sacramento Kings 82 241.5 40.6 87.7 0.462 10.2 28 0.366 30.3 59.8 0.508 17.7 23.2 0.762 11.3 33.7 45 24.2 8.8 5.3 16 22 109.1

File diff suppressed because it is too large Load Diff

@ -0,0 +1,31 @@
Rk,Team,Age,W,L,PW,PL,MOV,SOS,SRS,ORtg,DRtg,Pace,FTr,3PAr,TS%,eFG%,TOV%,ORB%,FT/FGA,eFG%,TOV%,DRB%,FT/FGA,Arena,Attendance
1,Golden State Warriors,27.4,73,9,65,17,10.76,-0.38,10.38,114.5,103.8,99.3,0.25,0.362,0.593,0.563,13.5,23.5,0.191,0.479,12.6,76,0.208,Oracle Arena,803436
2,San Antonio Spurs,30.3,67,15,67,15,10.63,-0.36,10.28,110.3,99,93.8,0.246,0.223,0.564,0.526,12.4,23,0.197,0.477,14.1,79.1,0.182,AT&T Center,756445
3,Oklahoma City Thunder,25.8,55,27,59,23,7.28,-0.19,7.09,113.1,105.6,96.7,0.292,0.275,0.565,0.524,14,31.1,0.228,0.484,11.7,76,0.205,Chesapeake Energy Arena,746323
4,Cleveland Cavaliers,28.1,57,25,57,25,6,-0.55,5.45,110.9,104.5,93.3,0.259,0.352,0.558,0.524,12.7,25.1,0.194,0.496,12.6,78.5,0.205,Quicken Loans Arena,843042
5,Los Angeles Clippers,29.7,53,29,53,29,4.28,-0.15,4.13,108.3,103.8,95.8,0.318,0.324,0.556,0.524,12.1,20.1,0.22,0.48,13.8,73.8,0.222,STAPLES Center,786910
6,Toronto Raptors,26.3,56,26,53,29,4.5,-0.42,4.08,110,105.2,92.9,0.328,0.287,0.552,0.504,12.3,24.6,0.255,0.498,12.7,77.7,0.201,Air Canada Centre,812863
7,Atlanta Hawks,28.2,48,34,51,31,3.61,-0.12,3.49,105.1,101.4,97.1,0.237,0.336,0.552,0.516,13.8,19.1,0.185,0.48,14.4,74.6,0.194,Philips Arena,690150
8,Boston Celtics,25.2,48,34,50,32,3.21,-0.37,2.84,106.8,103.6,98.5,0.264,0.293,0.531,0.488,12.1,25.1,0.208,0.487,14.6,74.6,0.231,TD Garden,749076
9,Charlotte Hornets,26,48,34,49,33,2.72,-0.36,2.36,107.1,104.3,95.7,0.28,0.348,0.545,0.502,11.7,20,0.222,0.496,12.5,79.8,0.191,Time Warner Cable Arena,716894
10,Utah Jazz,24.2,40,42,46,36,1.79,0.05,1.84,105.9,103.9,91,0.286,0.297,0.54,0.501,14.2,25.9,0.213,0.495,13.5,77.7,0.21,Vivint Smart Home Arena,791489
11,Indiana Pacers,26.9,45,37,46,36,1.71,-0.09,1.62,104.6,102.9,96.6,0.268,0.27,0.536,0.497,13.5,23.4,0.205,0.489,14.3,76,0.205,Bankers Life Fieldhouse,690733
12,Miami Heat,28.4,48,34,46,36,1.65,-0.14,1.5,106.1,104.4,93.6,0.282,0.221,0.545,0.508,13.3,23.8,0.21,0.485,12.1,77.8,0.196,AmericanAirlines Arena,809350
13,Portland Trail Blazers,24.3,44,38,43,39,0.83,0.15,0.98,108.8,108,96,0.268,0.332,0.548,0.511,13.2,25.9,0.202,0.503,12.1,76.2,0.225,Moda Center,794085
14,Detroit Pistons,25,44,38,43,39,0.61,-0.18,0.43,106.1,105.5,95.1,0.296,0.303,0.522,0.491,12.2,27,0.197,0.504,12.5,79.3,0.196,The Palace of Auburn Hills,677138
15,Houston Rockets,27.8,41,41,42,40,0.2,0.14,0.34,108.3,108.1,97.6,0.352,0.37,0.553,0.516,14.2,25.7,0.244,0.516,14.7,72.8,0.219,Toyota Center,737244
16,Dallas Mavericks,30.3,42,40,40,42,-0.3,0.29,-0.02,106.7,107,94.3,0.265,0.339,0.544,0.502,12,20.6,0.211,0.504,12.8,76.2,0.198,American Airlines Center,825901
17,Washington Wizards,27.3,41,41,40,42,-0.5,0,-0.5,105.3,105.8,98.5,0.263,0.282,0.544,0.511,13.1,20.6,0.192,0.515,14.6,77.7,0.218,Verizon Center,725426
18,Chicago Bulls,27.6,42,40,37,45,-1.48,0.01,-1.46,105,106.5,95.7,0.24,0.244,0.526,0.487,12.6,24.5,0.189,0.485,10.7,74.9,0.182,United Center,894659
19,Orlando Magic,23.9,35,47,36,46,-1.62,-0.06,-1.68,105.1,106.8,96,0.232,0.255,0.533,0.5,12.8,23.1,0.175,0.513,13.8,76.5,0.215,Amway Center,719275
20,Memphis Grizzlies,30.5,42,40,35,47,-2.24,0.11,-2.14,105.4,107.8,93.3,0.295,0.222,0.524,0.477,12.3,25.3,0.231,0.518,15.2,75.1,0.251,FedEx Forum,701894
21,Sacramento Kings,26.6,33,49,34,48,-2.48,0.16,-2.32,106,108.4,100,0.295,0.26,0.546,0.51,14.2,23.9,0.214,0.521,14,74.9,0.202,Sleep Train Arena,707526
22,New York Knicks,27.2,32,50,33,49,-2.73,0,-2.74,104.6,107.6,93.4,0.255,0.256,0.527,0.483,12.6,23.7,0.205,0.487,10.5,75.8,0.204,Madison Square Garden (IV),812292
23,Denver Nuggets,24.7,33,49,33,49,-3.1,0.29,-2.81,105.6,108.9,95.7,0.282,0.277,0.531,0.489,13.2,25.8,0.216,0.515,12.6,77.3,0.216,Pepsi Center,577898
24,Minnesota Timberwolves,24.6,29,53,31,51,-3.54,0.15,-3.38,106.5,110.1,95.2,0.332,0.202,0.549,0.498,13.9,24.3,0.263,0.524,13.6,74.7,0.2,Target Center,581178
25,New Orleans Pelicans,26.6,30,52,31,51,-3.79,0.24,-3.56,105.6,109.5,96.8,0.259,0.277,0.537,0.498,12.3,21.2,0.201,0.523,12.7,78.8,0.225,Smoothie King Center,688549
26,Milwaukee Bucks,23.5,33,49,29,53,-4.18,0.2,-3.98,104.3,108.7,94.2,0.276,0.189,0.537,0.499,14.2,24.9,0.207,0.51,14.2,73.1,0.221,BMO Harris Bradley Center,621808
27,Phoenix Suns,26,23,59,24,58,-6.66,0.34,-6.32,102.2,109,98.5,0.271,0.302,0.526,0.487,15.2,25.4,0.204,0.523,13.5,77.1,0.237,Talking Stick Resort Arena,701405
28,Brooklyn Nets,26.9,21,61,22,60,-7.35,0.24,-7.12,103.2,110.9,95.2,0.246,0.218,0.527,0.492,13.6,24.1,0.186,0.534,13.1,75.7,0.176,Barclays Center,620142
29,Los Angeles Lakers,26.5,17,65,17,65,-9.56,0.64,-8.92,101.6,111.6,95.6,0.292,0.29,0.509,0.46,12.5,23.1,0.228,0.523,11.6,74.7,0.202,STAPLES Center,778877
30,Philadelphia 76ers,23.3,10,72,16,66,-10.23,0.31,-9.92,98.8,109.2,97.9,0.269,0.327,0.519,0.487,14.8,20.6,0.186,0.51,13.5,74,0.24,Wells Fargo Center,614650
1 Rk Team Age W L PW PL MOV SOS SRS ORtg DRtg Pace FTr 3PAr TS% eFG% TOV% ORB% FT/FGA eFG% TOV% DRB% FT/FGA Arena Attendance
2 1 Golden State Warriors 27.4 73 9 65 17 10.76 -0.38 10.38 114.5 103.8 99.3 0.25 0.362 0.593 0.563 13.5 23.5 0.191 0.479 12.6 76 0.208 Oracle Arena 803436
3 2 San Antonio Spurs 30.3 67 15 67 15 10.63 -0.36 10.28 110.3 99 93.8 0.246 0.223 0.564 0.526 12.4 23 0.197 0.477 14.1 79.1 0.182 AT&T Center 756445
4 3 Oklahoma City Thunder 25.8 55 27 59 23 7.28 -0.19 7.09 113.1 105.6 96.7 0.292 0.275 0.565 0.524 14 31.1 0.228 0.484 11.7 76 0.205 Chesapeake Energy Arena 746323
5 4 Cleveland Cavaliers 28.1 57 25 57 25 6 -0.55 5.45 110.9 104.5 93.3 0.259 0.352 0.558 0.524 12.7 25.1 0.194 0.496 12.6 78.5 0.205 Quicken Loans Arena 843042
6 5 Los Angeles Clippers 29.7 53 29 53 29 4.28 -0.15 4.13 108.3 103.8 95.8 0.318 0.324 0.556 0.524 12.1 20.1 0.22 0.48 13.8 73.8 0.222 STAPLES Center 786910
7 6 Toronto Raptors 26.3 56 26 53 29 4.5 -0.42 4.08 110 105.2 92.9 0.328 0.287 0.552 0.504 12.3 24.6 0.255 0.498 12.7 77.7 0.201 Air Canada Centre 812863
8 7 Atlanta Hawks 28.2 48 34 51 31 3.61 -0.12 3.49 105.1 101.4 97.1 0.237 0.336 0.552 0.516 13.8 19.1 0.185 0.48 14.4 74.6 0.194 Philips Arena 690150
9 8 Boston Celtics 25.2 48 34 50 32 3.21 -0.37 2.84 106.8 103.6 98.5 0.264 0.293 0.531 0.488 12.1 25.1 0.208 0.487 14.6 74.6 0.231 TD Garden 749076
10 9 Charlotte Hornets 26 48 34 49 33 2.72 -0.36 2.36 107.1 104.3 95.7 0.28 0.348 0.545 0.502 11.7 20 0.222 0.496 12.5 79.8 0.191 Time Warner Cable Arena 716894
11 10 Utah Jazz 24.2 40 42 46 36 1.79 0.05 1.84 105.9 103.9 91 0.286 0.297 0.54 0.501 14.2 25.9 0.213 0.495 13.5 77.7 0.21 Vivint Smart Home Arena 791489
12 11 Indiana Pacers 26.9 45 37 46 36 1.71 -0.09 1.62 104.6 102.9 96.6 0.268 0.27 0.536 0.497 13.5 23.4 0.205 0.489 14.3 76 0.205 Bankers Life Fieldhouse 690733
13 12 Miami Heat 28.4 48 34 46 36 1.65 -0.14 1.5 106.1 104.4 93.6 0.282 0.221 0.545 0.508 13.3 23.8 0.21 0.485 12.1 77.8 0.196 AmericanAirlines Arena 809350
14 13 Portland Trail Blazers 24.3 44 38 43 39 0.83 0.15 0.98 108.8 108 96 0.268 0.332 0.548 0.511 13.2 25.9 0.202 0.503 12.1 76.2 0.225 Moda Center 794085
15 14 Detroit Pistons 25 44 38 43 39 0.61 -0.18 0.43 106.1 105.5 95.1 0.296 0.303 0.522 0.491 12.2 27 0.197 0.504 12.5 79.3 0.196 The Palace of Auburn Hills 677138
16 15 Houston Rockets 27.8 41 41 42 40 0.2 0.14 0.34 108.3 108.1 97.6 0.352 0.37 0.553 0.516 14.2 25.7 0.244 0.516 14.7 72.8 0.219 Toyota Center 737244
17 16 Dallas Mavericks 30.3 42 40 40 42 -0.3 0.29 -0.02 106.7 107 94.3 0.265 0.339 0.544 0.502 12 20.6 0.211 0.504 12.8 76.2 0.198 American Airlines Center 825901
18 17 Washington Wizards 27.3 41 41 40 42 -0.5 0 -0.5 105.3 105.8 98.5 0.263 0.282 0.544 0.511 13.1 20.6 0.192 0.515 14.6 77.7 0.218 Verizon Center 725426
19 18 Chicago Bulls 27.6 42 40 37 45 -1.48 0.01 -1.46 105 106.5 95.7 0.24 0.244 0.526 0.487 12.6 24.5 0.189 0.485 10.7 74.9 0.182 United Center 894659
20 19 Orlando Magic 23.9 35 47 36 46 -1.62 -0.06 -1.68 105.1 106.8 96 0.232 0.255 0.533 0.5 12.8 23.1 0.175 0.513 13.8 76.5 0.215 Amway Center 719275
21 20 Memphis Grizzlies 30.5 42 40 35 47 -2.24 0.11 -2.14 105.4 107.8 93.3 0.295 0.222 0.524 0.477 12.3 25.3 0.231 0.518 15.2 75.1 0.251 FedEx Forum 701894
22 21 Sacramento Kings 26.6 33 49 34 48 -2.48 0.16 -2.32 106 108.4 100 0.295 0.26 0.546 0.51 14.2 23.9 0.214 0.521 14 74.9 0.202 Sleep Train Arena 707526
23 22 New York Knicks 27.2 32 50 33 49 -2.73 0 -2.74 104.6 107.6 93.4 0.255 0.256 0.527 0.483 12.6 23.7 0.205 0.487 10.5 75.8 0.204 Madison Square Garden (IV) 812292
24 23 Denver Nuggets 24.7 33 49 33 49 -3.1 0.29 -2.81 105.6 108.9 95.7 0.282 0.277 0.531 0.489 13.2 25.8 0.216 0.515 12.6 77.3 0.216 Pepsi Center 577898
25 24 Minnesota Timberwolves 24.6 29 53 31 51 -3.54 0.15 -3.38 106.5 110.1 95.2 0.332 0.202 0.549 0.498 13.9 24.3 0.263 0.524 13.6 74.7 0.2 Target Center 581178
26 25 New Orleans Pelicans 26.6 30 52 31 51 -3.79 0.24 -3.56 105.6 109.5 96.8 0.259 0.277 0.537 0.498 12.3 21.2 0.201 0.523 12.7 78.8 0.225 Smoothie King Center 688549
27 26 Milwaukee Bucks 23.5 33 49 29 53 -4.18 0.2 -3.98 104.3 108.7 94.2 0.276 0.189 0.537 0.499 14.2 24.9 0.207 0.51 14.2 73.1 0.221 BMO Harris Bradley Center 621808
28 27 Phoenix Suns 26 23 59 24 58 -6.66 0.34 -6.32 102.2 109 98.5 0.271 0.302 0.526 0.487 15.2 25.4 0.204 0.523 13.5 77.1 0.237 Talking Stick Resort Arena 701405
29 28 Brooklyn Nets 26.9 21 61 22 60 -7.35 0.24 -7.12 103.2 110.9 95.2 0.246 0.218 0.527 0.492 13.6 24.1 0.186 0.534 13.1 75.7 0.176 Barclays Center 620142
30 29 Los Angeles Lakers 26.5 17 65 17 65 -9.56 0.64 -8.92 101.6 111.6 95.6 0.292 0.29 0.509 0.46 12.5 23.1 0.228 0.523 11.6 74.7 0.202 STAPLES Center 778877
31 30 Philadelphia 76ers 23.3 10 72 16 66 -10.23 0.31 -9.92 98.8 109.2 97.9 0.269 0.327 0.519 0.487 14.8 20.6 0.186 0.51 13.5 74 0.24 Wells Fargo Center 614650

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,31 @@
Rk,Team,Age,W,L,PW,PL,MOV,SOS,SRS,ORtg,DRtg,NRtg,Pace,FTr,3PAr,TS%,eFG%,TOV%,ORB%,FT/FGA,eFG%,TOV%,DRB%,FT/FGA,Arena,Attend.,Attend./G
1,San Antonio Spurs,30.3,67,15,67,15,10.63,-0.36,10.28,110.3,99.0,+11.3,93.8,.246,.223,.564,.526,12.4,23.0,.197,.477,14.1,79.1,.182,AT&T Center,"756,445","18,450"
2,Golden State Warriors,27.4,73,9,65,17,10.76,-0.38,10.38,114.5,103.8,+10.7,99.3,.250,.362,.593,.563,13.5,23.5,.191,.479,12.6,76.0,.208,Oracle Arena,"803,436","19,596"
3,Oklahoma City Thunder,25.8,55,27,59,23,7.28,-0.19,7.09,113.1,105.6,+7.5,96.7,.292,.275,.565,.524,14.0,31.1,.228,.484,11.7,76.0,.205,Chesapeake Energy Arena,"746,323","18,203"
4,Cleveland Cavaliers,28.1,57,25,57,25,6.00,-0.55,5.45,110.9,104.5,+6.4,93.3,.259,.352,.558,.524,12.7,25.1,.194,.496,12.6,78.5,.205,Quicken Loans Arena,"843,042","20,562"
5,Toronto Raptors,26.3,56,26,53,29,4.50,-0.42,4.08,110.0,105.2,+4.8,92.9,.328,.287,.552,.504,12.3,24.6,.255,.498,12.7,77.7,.201,Air Canada Centre,"812,863","19,826"
6,Los Angeles Clippers,29.7,53,29,53,29,4.28,-0.15,4.13,108.3,103.8,+4.5,95.8,.318,.324,.556,.524,12.1,20.1,.220,.480,13.8,73.8,.222,STAPLES Center,"786,910","19,193"
7,Atlanta Hawks,28.2,48,34,51,31,3.61,-0.12,3.49,105.1,101.4,+3.7,97.1,.237,.336,.552,.516,13.8,19.1,.185,.480,14.4,74.6,.194,Philips Arena,"690,150","16,833"
8,Boston Celtics,25.2,48,34,50,32,3.21,-0.37,2.84,106.8,103.6,+3.2,98.5,.264,.293,.531,.488,12.1,25.1,.208,.487,14.6,74.6,.231,TD Garden,"749,076","18,270"
9,Charlotte Hornets,26.0,48,34,49,33,2.72,-0.36,2.36,107.1,104.3,+2.8,95.7,.280,.348,.545,.502,11.7,20.0,.222,.496,12.5,79.8,.191,Time Warner Cable Arena,"716,894","17,485"
10,Utah Jazz,40,42,46,36,1.79,0.05,1.84,105.9,103.9,+2.0,91.0,.286,.297,.540,.501,14.2,25.9,.213,.495,13.5,77.7,.210,Vivint Smart Home Arena,"791,489","19,305"
11,Miami Heat,28.4,48,34,46,36,1.65,-0.14,1.50,106.1,104.4,+1.7,93.6,.282,.221,.545,.508,13.3,23.8,.210,.485,12.1,77.8,.196,AmericanAirlines Arena,"809,350","19,740"
12,Indiana Pacers,26.9,45,37,46,36,1.71,-0.09,1.62,104.6,102.9,+1.7,96.6,.268,.270,.536,.497,13.5,23.4,.205,.489,14.3,76.0,.205,Bankers Life Fieldhouse,"690,733","16,847"
13,Portland Trail Blazers,24.3,44,38,43,39,0.83,0.15,0.98,108.8,108.0,+0.8,96.0,.268,.332,.548,.511,13.2,25.9,.202,.503,12.1,76.2,.225,Moda Center,"794,085","19,368"
14,Detroit Pistons,25.0,44,38,43,39,0.61,-0.18,0.43,106.1,105.5,+0.6,95.1,.296,.303,.522,.491,12.2,27.0,.197,.504,12.5,79.3,.196,The Palace of Auburn Hills,"677,138","16,516"
15,Houston Rockets,27.8,41,41,42,40,0.20,0.14,0.34,108.3,108.1,+0.2,97.6,.352,.370,.553,.516,14.2,25.7,.244,.516,14.7,72.8,.219,Toyota Center,"737,244","17,982"
16,Dallas Mavericks,30.3,42,40,40,42,-0.30,0.29,-0.02,106.7,107.0,-0.3,94.3,.265,.339,.544,.502,12.0,20.6,.211,.504,12.8,76.2,.198,American Airlines Center,"825,901","20,144"
17,Washington Wizards,41,41,40,42,-0.50,0.00,-0.50,105.3,105.8,-0.5,98.5,.263,.282,.544,.511,13.1,20.6,.192,.515,14.6,77.7,.218,Verizon Center,"725,426","17,693"
18,Chicago Bulls,42,40,37,45,-1.48,0.01,-1.46,105.0,106.5,-1.5,95.7,.240,.244,.526,.487,12.6,24.5,.189,.485,10.7,74.9,.182,United Center,"894,659","21,821"
19,Orlando Magic,35,47,36,46,-1.62,-0.06,-1.68,105.1,106.8,-1.7,96.0,.232,.255,.533,.500,12.8,23.1,.175,.513,13.8,76.5,.215,Amway Center,"719,275","17,515"
20,Sacramento Kings,33,49,34,48,-2.48,0.16,-2.32,106.0,108.4,-2.4,100.0,.295,.260,.546,.510,14.2,23.9,.214,.521,14.0,74.9,.202,Sleep Train Arena,"707,526","17,222"
21,Memphis Grizzlies,30.5,42,40,35,47,-2.24,0.11,-2.14,105.4,107.8,-2.4,93.3,.295,.222,.524,.477,12.3,25.3,.231,.518,15.2,75.1,.251,FedEx Forum,"701,894","17,119"
22,New York Knicks,32,50,33,49,-2.73,0.00,-2.74,104.6,107.6,-3.0,93.4,.255,.256,.527,.483,12.6,23.7,.205,.487,10.5,75.8,.204,Madison Square Garden (IV),"812,292","19,812"
23,Denver Nuggets,33,49,33,49,-3.10,0.29,-2.81,105.6,108.9,-3.3,95.7,.282,.277,.531,.489,13.2,25.8,.216,.515,12.6,77.3,.216,Pepsi Center,"577,898","14,095"
24,Minnesota Timberwolves,29,53,31,51,-3.54,0.15,-3.38,106.5,110.1,-3.6,95.2,.332,.202,.549,.498,13.9,24.3,.263,.524,13.6,74.7,.200,Target Center,"581,178","14,175"
25,New Orleans Pelicans,30,52,31,51,-3.79,0.24,-3.56,105.6,109.5,-3.9,96.8,.259,.277,.537,.498,12.3,21.2,.201,.523,12.7,78.8,.225,Smoothie King Center,"688,549","16,794"
26,Milwaukee Bucks,33,49,29,53,-4.18,0.20,-3.98,104.3,108.7,-4.4,94.2,.276,.189,.537,.499,14.2,24.9,.207,.510,14.2,73.1,.221,BMO Harris Bradley Center,"621,808","15,166"
27,Phoenix Suns,23,59,24,58,-6.66,0.34,-6.32,102.2,109.0,-6.8,98.5,.271,.302,.526,.487,15.2,25.4,.204,.523,13.5,77.1,.237,Talking Stick Resort Arena,"701,405","17,107"
28,Brooklyn Nets,21,61,22,60,-7.35,0.24,-7.12,103.2,110.9,-7.7,95.2,.246,.218,.527,.492,13.6,24.1,.186,.534,13.1,75.7,.176,Barclays Center,"620,142","15,125"
29,Los Angeles Lakers,17,65,17,65,-9.56,0.64,-8.92,101.6,111.6,-10.0,95.6,.292,.290,.509,.460,12.5,23.1,.228,.523,11.6,74.7,.202,STAPLES Center,"778,877","18,997"
30,Philadelphia 76ers,10,72,16,66,-10.23,0.31,-9.92,98.8,109.2,-10.4,97.9,.269,.327,.519,.487,14.8,20.6,.186,.510,13.5,74.0,.240,Wells Fargo Center,"614,650","14,991"
Can't render this file because it has a wrong number of fields in line 11.

@ -0,0 +1,3 @@
# 默认忽略的文件
/shelf/
/workspace.xml

@ -0,0 +1,12 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredIdentifiers">
<list>
<option value="pyspark.streaming.kafka" />
</list>
</option>
</inspection_tool>
</profile>
</component>

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8" project-jdk-type="Python SDK" />
<component name="PyCharmProfessionalAdvertiser">
<option name="shown" value="true" />
</component>
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/nba.iml" filepath="$PROJECT_DIR$/.idea/nba.iml" />
</modules>
</component>
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="jdk" jdkName="Python 3.8" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1,3 @@
{
"CurrentProjectSetting": null
}

@ -0,0 +1,6 @@
{
"ExpandedNodes": [
""
],
"PreviewInSolutionExplorer": false
}

Binary file not shown.

Binary file not shown.

@ -0,0 +1,3 @@
{
"liveServer.settings.port": 5501
}

@ -0,0 +1,160 @@
import re
import urllib.request,urllib.error
import xlwt
import sqlite3
import socket
import time
import json
def main(): #主程序
print("开始爬取.....")
year=2010 #起始年份
baseurl='https://china.nba.com/static/data/league/playerstats_All_All_All_0_All_false_2018_2_All_Team_points_All_perGame.json'
#获得数据
NBAPlayerdatadict=getdata(baseurl,year)
#所需信息的抬头列表
cols_index2 = ['displayName',"code", 'position', 'name',"code",'games',
'points', 'pointsPg', 'rebsPg', 'assistsPg',
'minsPg', 'fgpct', 'tppct', 'ftpct', 'blocksPg',
'foulsPg', 'height', 'weight'
]
cols_index1 = ['playerProfile','playerProfile', 'playerProfile', 'teamProfile',
'teamProfile', 'statAverage',
'statTotal', 'statAverage', 'statAverage', 'statAverage',
'statAverage', 'statAverage', 'statAverage', 'statAverage',
'statAverage', 'statAverage', 'playerProfile', 'playerProfile'
]
#保存数据
savepath='.//'+str(year)+'年-2020年NBA球员数据排行TOP50.xls'
savedata(NBAPlayerdatadict,savepath,year,cols_index1,cols_index2)
#数据库位置
dbpath='.//NBA球员数据库.db'
#将数据保存到数据库
saveDB(NBAPlayerdatadict,dbpath,year,cols_index1,cols_index2)
print('成功爬取并保存数据!')
def getdata(baseurl,year): #爬取网页获得需要的数据
Playerdatadict={}
for i in range(year,2020):
#创建模式匹配更换url获取不同年份的data
pattern_date = re.compile(r'(_\d*?_\d)', re.S)
newbaseurl = re.sub(pattern_date, '_'+str(i)+'_2', baseurl)
html=askUrl(newbaseurl)
# 将html中的文件进行json解析得到Playerdata字典
Playerdata=json.loads(html)
# 将Playerdata放大字典中并带上年份
Playerdatadict.setdefault(str(i)+"", {}).update(Playerdata)
time.sleep(0.05) # 设置爬虫间隔
print('成功获取数据!')
return Playerdatadict
def savedata(Playerdatadict,savepath,year,cols_index1,cols_index2): #保存数据到Excel
cols=['排名','球员','球员链接','位置','球队','球队链接',
'出场数','赛季得分','场均得分','场均篮板',
'场均助攻','分钟','命中率','三分命中率(%)',
'罚球命中率','场均盖帽','场均失误','身高(m)','体重']
workbook = xlwt.Workbook(encoding='UTF-8') # 创建workbook
for i in range(year, 2020):
worksheet = workbook.add_sheet(str(i) + '') # 创建工作表
for j in range(len(cols)):
worksheet.write(0,j,cols[j])
for k in range(len(Playerdatadict[str(i) + '']['payload']['players'])):
worksheet.write(k + 1, 0, k + 1)
for n in range(len(cols_index1)):
p_link = r'https://china.nba.com/players/#!/'
t_link = r'https://china.nba.com/'
# 从Playerdatadict将有效信息取出来
Playerdatadict_info = Playerdatadict[str(i) + ""]['payload']['players'][k][cols_index1[n]][
cols_index2[n]]
if n != 1 and n != 4:
worksheet.write(k + 1, n + 1, Playerdatadict_info)
elif n == 1: # 球员链接+str(link)
worksheet.write(k + 1, n + 1, p_link + Playerdatadict_info)
else:
worksheet.write(k + 1, n + 1, t_link + Playerdatadict_info)
workbook.save(savepath)
print('保存数据成功!')
def askUrl(url): #获得请求得到一个html(字符串的形式)
headers={ #伪装身份信息
'User-Agent': 'Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 80.03987.122Safari / 537.36'
}
request = urllib.request.Request(url,headers=headers)
html=''
try:
response=urllib.request.urlopen(request) #提交
html=response.read().decode('UTF-8')
print("成功爬取到html!")
except urllib.error.URLError as e:
if hasattr(e, "code"):
print(e.code)
if hasattr(e, "reason"):
print(e.reason)
if isinstance(e.reason, socket.timeout):
print('time out!')
return html
def saveDB(Playerdatadict,dbpath,year,cols_index1,cols_index2): #保存数据到数据库
for i in range(year, 2020):
#表的名称
tablename="球员数据"+str(i)+''
#初始化数据库
initDB(tablename,dbpath)
con=sqlite3.connect(dbpath)
c=con.cursor()
#Playerdatadict_info为从Playerdatadict字典里面提取到的有用信息
Playerdatadict_info = Playerdatadict[str(i) + ""]['payload']['players']
for j in range(len(Playerdatadict_info)): #球员信息个数len(Playerdatadict_info)
data_need = [] # 每一行所需信息
for k in range(len(cols_index1)):
# 从Playerdatadict将有效信息取出来
info = Playerdatadict_info[j][cols_index1[k]][cols_index2[k]]
p_link = r'https://china.nba.com/players/#!/'
t_link = r'https://china.nba.com/'
if k!= 1 and k!= 4:
data_need.append(str(info))
elif k==1:
data_need.append(p_link+str(info))
else:
data_need.append(t_link + str(info))
for index in range(len(data_need)):
data_need[index] = '"' + data_need[index] + '"'
sql = '''
insert into '''+str(tablename)+'''(
name,name_link,position,teamname,team_link,games,points,averpoints,averrebound,averassist,minutes,fgpct,tppct,ftpct,averblocks,averfouls,height,weight)
values (%s)'''%(",".join(data_need))
c.execute(sql)
con.commit()
c.close()
con.close()
initDB(str(year)+'',dbpath)
print('数据成功保存到数据库!')
def initDB(tablename,dbpath):
sql = '''
create table ''' + str(tablename) + '''(
ranking integer primary key autoincrement,
name text,
name_link text,
position text,
teamname text,
team_link text,
games integer ,
points integer ,
averpoints integer ,
averrebound integer,
averassist integer ,
minutes integer ,
fgpct integer,
tppct integer,
ftpct integer ,
averblocks integer ,
averfouls integer,
height integer,
weight text
);
'''
con = sqlite3.connect(dbpath) # 连接数据库
c = con.cursor() # 创建游标
c.execute(sql)
con.commit()
c.close()
con.close()
print('' + str(tablename) + "创建成功!")
if __name__ == '__main__':
main()

@ -0,0 +1,77 @@
import random
import jieba
import sqlite3
import numpy as np
from PIL import Image
from wordcloud import WordCloud
from matplotlib import pyplot as plt
def random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None):
h = random.randint(150, 250)
s = int(100.0 * 255.0 / 255.0)
l = int(100.0 * float(random.randint(60, 120)) / 255.0)
return "hsl({}, {}%, {}%)".format(h, s, l)
# 起始年份
year = 2010
# 存放字符的字符串
con = sqlite3.connect('D:\\Desktop\\nba1\\NBA球员数据库.db')
c = con.cursor()
text = ''
for i in range(year, 2020):
sql = '''
select name from 球员数据''' + str(i) + '''
'''
data = c.execute(sql)
for item in data:
text += item[0]
cut = jieba.cut(text)
string = ",".join(cut)
print(string)
img = Image.open(r'D:\Desktop\nba1\static\assets\img\NBA.png') # 打开图片
img_array = np.array(img) # 将图片转化为数组
wc = WordCloud(
background_color='blue',
mask=img_array,
font_path="/font/msyh.ttc",
color_func=random_color_func
)
wc.generate_from_text(string)
# 绘制图片
fig = plt.figure(1)
plt.imshow(wc)
plt.axis('off')
plt.savefig(r'D:\Desktop\nba1\static\assets\img\namecloud.png', dpi=1000)
# 起始年份
year = 2010
con = sqlite3.connect("D:\\Desktop\\nba1\\NBA球员数据库.db")
c = con.cursor()
# 存放字符的字符串
text = ''
for i in range(year, 2020):
sql = '''
select teamname from 球员数据''' + str(i) + '''
'''
data = c.execute(sql)
for item in data:
text += item[0]
cut = jieba.cut(text)
string = ",".join(cut)
print(string)
c.close()
con.close()
img = Image.open(r'D:\Desktop\nba1\static\assets\img\乔1.jpg') # 打开图片
img_array = np.array(img) # 将图片转化为数组
wc = WordCloud(
background_color='white',
mask=img_array,
font_path="/font/msyh.ttc",
color_func=random_color_func
)
wc.generate_from_text(string)
# 绘制图片
fig = plt.figure(2)
plt.imshow(wc)
plt.axis('off')
plt.savefig(r'D:\Desktop\nba1\static\assets\img\teamcloud.png', dpi=900)
#plt.show()

@ -0,0 +1,2 @@
nba球队胜率预测
NBA球员数据可视化

@ -0,0 +1,73 @@
from flask import Flask,render_template,request
import sqlite3
app = Flask(__name__)
@app.route('/')
def welcome():
return render_template('index.html')
@app.route('/index')
def index():
return welcome()
@app.route('/top50')
def top50():
datalist = []
con = sqlite3.connect("NBA球员数据库.db")
c = con.cursor()
#设置当前页数
page=int(request.args.get('page',1))
year=int(page)+2009
sql= '''
select * from 球员数据'''+str(year)+'''
'''
data=c.execute(sql)
for item in data:
datalist.append(item)
c.close()
con.close()
# 设置总页码数
pagemax = 10
return render_template('top50.html',datalist=datalist,page=page,pagemax=pagemax)
@app.route('/cloud')
def cloud():
return render_template('cloud.html')
@app.route('/chart')
def chart():
datalist = []
years=[] #年份
xx=[]#x坐标数据
#存放球队的名称的列表
team=[['76人'], ['公牛'], ['凯尔特人'], ['勇士'], ['国王'], ['太阳'], ['奇才'], ['小牛'], ['尼克斯'], ['开拓者'], ['快船'], ['掘金'], ['森林狼'], ['步行者'], ['活塞'], ['湖人'], ['火箭'], ['灰熊'], ['热火'], ['爵士'], ['猛龙'], ['篮网'], ['老鹰'], ['雄鹿'], ['雷霆'], ['马刺'], ['骑士'], ['魔术'], ['鹈鹕'], ['黄蜂']]
#存放球队名称的字符串
# 存放字符的字符串
text = ''
con = sqlite3.connect("NBA球员数据库.db")
c = con.cursor()
# 设置当前页数
page = 1
year = int(page) + 2009
for i in range(year, 2020):
data_peryear = []
years.append(i)
sql = '''
select * from 球员数据''' + str(i) + '''
'''
data = c.execute(sql)
for item in data:
data_peryear.append(item)
#将球队名称练成字符串
text += item[4]
datalist.append(data_peryear)
for index in range(10):
xx.append(str(index+2010)+str(datalist[index][0][1]))
c.close()
con.close()
#利用字符串统计球队名称出现的次数
for i in range(len(team)):
number=text.count(team[i][0])
team[i].append(str(number))
return render_template('chart.html', datalist=datalist, years=years, xx=xx, team=team)
@app.route('/team')
def team():
return render_template('team.html')
if __name__ == '__main__':
app.run(debug=True)

Binary file not shown.

@ -0,0 +1,142 @@
import pandas as pd
import math
import numpy as np
import csv
from sklearn import linear_model
from sklearn.model_selection import cross_val_score
init_elo = 1600 # 初始化elo值
team_elos = {}
folder = '"D:\Desktop\nba1\"' # 文件路径
def PruneData(M_stat, O_stat, T_stat):
#这个函数要完成的任务在于将原始读入的诸多队伍的数据经过修剪使其变为一个以team为索引的排列的特征数据
#丢弃与球队实力无关的统计量
pruneM = M_stat.drop(['Rk', 'Arena'],axis = 1)
pruneO = O_stat.drop(['Rk','G','MP'],axis = 1)
pruneT = T_stat.drop(['Rk','G','MP'],axis = 1)
#将多个数据通过相同的indexteam合并为一个数据
mergeMO = pd.merge(pruneM, pruneO, how = 'left', on = 'Team')
newstat = pd.merge(mergeMO, pruneT, how = 'left', on = 'Team')
#将team作为index的数据返回
return newstat.set_index('Team', drop = True, append = False)
def GetElo(team):
# 初始化每个球队的elo等级分
try:
return team_elos[team]
except:
team_elos[team] = init_elo
return team_elos[team]
def CalcElo(winteam, loseteam):
# winteam, loseteam的输入应为字符串
# 给出当前两个队伍的elo分数
R1 = GetElo(winteam)
R2 = GetElo(loseteam)
# 计算比赛后的等级分参考elo计算公式
E1 = 1/(1 + math.pow(10,(R2 - R1)/400))
E2 = 1/(1 + math.pow(10,(R1 - R2)/400))
if R1>=2400:
K=16
elif R1<=2100:
K=32
else:
K=24
R1new = round(R1 + K*(1 - E1))
R2new = round(R2 + K*(0 - E2))
return R1new, R2new
def GenerateTrainData(stat, trainresult):
#将输入构造为[[team1特征team2特征]...[]...]
X = []
y = []
for index, rows in trainresult.iterrows():
winteam = rows['WTeam']
loseteam = rows['LTeam']
#获取最初的elo或是每个队伍最初的elo值
winelo = GetElo(winteam)
loseelo = GetElo(loseteam)
# 给主场比赛的队伍加上100的elo值
if rows['WLoc'] == 'H':
winelo = winelo+100
else:
loseelo = loseelo+100
# 把elo当为评价每个队伍的第一个特征值
fea_win = [winelo]
fea_lose = [loseelo]
# 添加我们从basketball reference.com获得的每个队伍的统计信息
for key, value in stat.loc[winteam].iteritems():
fea_win.append(value)
for key, value in stat.loc[loseteam].iteritems():
fea_lose.append(value)
# 将两支队伍的特征值随机的分配在每场比赛数据的左右两侧
# 并将对应的0/1赋给y值
if np.random.random() > 0.5:
X.append(fea_win+fea_lose)
y.append(0)
else:
X.append(fea_lose+fea_win)
y.append(1)
# 更新team elo分数
win_new_score, lose_new_score = CalcElo(winteam, loseteam)
team_elos[winteam] = win_new_score
team_elos[loseteam] = lose_new_score
# nan_to_num(x)是使用0代替数组x中的nan元素使用有限的数字代替inf元素
return np.nan_to_num(X),y
def GeneratePredictData(stat,info):
X=[]
#遍历所有的待预测数据,将数据变换为特征形式
for index, rows in stat.iterrows():
#首先将elo作为第一个特征
team1 = rows['Vteam']
team2 = rows['Hteam']
elo_team1 = GetElo(team1)
elo_team2 = GetElo(team2)
fea1 = [elo_team1]
fea2 = [elo_team2+100]
#球队统计信息作为剩余特征
for key, value in info.loc[team1].iteritems():
fea1.append(value)
for key, value in info.loc[team2].iteritems():
fea2.append(value)
#两队特征拼接
X.append(fea1 + fea2)
#nan_to_num的作用1将列表变换为array2.去除X中的非数字保证训练器读入不出问题
return np.nan_to_num(X)
if __name__ == '__main__':
# 设置导入数据表格文件的地址并读入数据
M_stat = pd.read_csv(folder + '/20-21Miscellaneous_Stat.csv')
O_stat = pd.read_csv(folder + '/20-21Opponent_Per_Game_Stat.csv')
T_stat = pd.read_csv(folder + '/20-21Team_Per_Game_Stat.csv')
team_result = pd.read_csv(folder + '/2020-2021_result.csv')
teamstat = PruneData(M_stat, O_stat, T_stat)
X,y = GenerateTrainData(teamstat, team_result)
# 训练网格模型
limodel = linear_model.LogisticRegression()
limodel.fit(X,y)
# 10折交叉验证
print(cross_val_score(model, X, y, cv=10, scoring='accuracy', n_jobs=-1).mean())
# 预测
pre_data = pd.read_csv(folder + '/21-22Schedule.csv')
pre_X = GeneratePredictData(pre_data, teamstat)
pre_y = limodel.predict_proba(pre_X)
predictlist = []
for index, rows in pre_data.iterrows():
reslt = [rows['Vteam'], pre_y[index][0], rows['Hteam'], pre_y[index][1]]
predictlist.append(reslt)
# 将预测结果输出保存为csv文件
with open(folder+'/prediction of 2021-2022.csv', 'w',newline='') as f:
writers = csv.writer(f)
writers.writerow(['Visit Team', 'corresponding probability of winning', 'Home Team', 'corresponding probability of winning'])
writers.writerows(predictlist)

@ -0,0 +1,197 @@
import requests
import re
import csv
from parsel import Selector
class NBASpider:
def __init__(self):
self.url = "https://www.basketball-reference.com/leagues/NBA_2021.html"
self.schedule_url = "https://www.basketball-reference.com/leagues/NBA_2016_games-{}.html"
self.advanced_team_url = "https://www.basketball-reference.com/leagues/NBA_2016.html"
self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 "
"Safari/537.36"
}
# 发送请求,获取数据
def send(self, url):
response = requests.get(url, headers=self.headers, timeout=30)
response.encoding = 'utf-8'
return response.text
# 解析html
def parse(self, html):
team_heads, team_datas = self.get_team_info(html)
opponent_heads, opponent_datas = self.get_opponent_info(html)
return team_heads, team_datas, opponent_heads, opponent_datas
def get_team_info(self, html):
"""
通过正则从获取到的html页面数据中team表的表头和各行数据
:param html 爬取到的页面数据
:return: team_heads表头
team_datas 列表内容
"""
# 1. 正则匹配数据所在的table
team_table = re.search('<table.*?id="per_game-team".*?>(.*?)</table>', html, re.S).group(1)
# 2. 正则从table中匹配出表头
team_head = re.search('<thead>(.*?)</thead>', team_table, re.S).group(1)
team_heads = re.findall('<th.*?>(.*?)</th>', team_head, re.S)
# 3. 正则从table中匹配出表的各行数据
team_datas = self.get_datas(team_table)
return team_heads, team_datas
# 解析opponent数据
def get_opponent_info(self, html):
"""
通过正则从获取到的html页面数据中opponent表的表头和各行数据
:param html 爬取到的页面数据
:return:
"""
# 1. 正则匹配数据所在的table
opponent_table = re.search('<table.*?id="per_game-opponent".*?>(.*?)</table>', html, re.S).group(1)
# 2. 正则从table中匹配出表头
opponent_head = re.search('<thead>(.*?)</thead>', opponent_table, re.S).group(1)
opponent_heads = re.findall('<th.*?>(.*?)</th>', opponent_head, re.S)
# 3. 正则从table中匹配出表的各行数据
opponent_datas = self.get_datas(opponent_table)
return opponent_heads, opponent_datas
# 获取表格body数据
def get_datas(self, table_html):
"""
从tboday数据中解析出实际数据去掉页面标签
:param table_html 解析出来的table数据
:return:
"""
tboday = re.search('<tbody>(.*?)</tbody>', table_html, re.S).group(1)
contents = re.findall('<tr.*?>(.*?)</tr>', tboday, re.S)
for oc in contents:
rk = re.findall('<th.*?>(.*?)</th>', oc)
datas = re.findall('<td.*?>(.*?)</td>', oc, re.S)
datas[0] = re.search('<a.*?>(.*?)</a>', datas[0]).group(1)
datas.insert(0, rk[0])
# yield 声明这个方法是一个生成器, 返回的值是datas
yield datas
def get_schedule_datas(self, table_html):
"""
从tboday数据中解析出实际数据去掉页面标签
:param table_html 解析出来的table数据
:return:
"""
tboday = re.search('<tbody>(.*?)</tbody>', table_html, re.S).group(1)
contents = re.findall('<tr.*?>(.*?)</tr>', tboday, re.S)
for oc in contents:
rk = re.findall('<th.*?><a.*?>(.*?)</a></th>', oc)
datas = re.findall('<td.*?>(.*?)</td>', oc, re.S)
if datas and len(datas) > 0:
datas[1] = re.search('<a.*?>(.*?)</a>', datas[1]).group(1)
datas[3] = re.search('<a.*?>(.*?)</a>', datas[3]).group(1)
datas[5] = re.search('<a.*?>(.*?)</a>', datas[5]).group(1)
datas.insert(0, rk[0])
# yield 声明这个方法是一个生成器, 返回的值是datas
yield datas
def get_advanced_team_datas(self, table):
trs = table.xpath('./tbody/tr')
for tr in trs:
rk = tr.xpath('./th/text()').get()
datas = tr.xpath('./td[@data-stat!="DUMMY"]/text()').getall()
datas[0] = tr.xpath('./td/a/text()').get()
datas.insert(0, rk)
yield datas
def parse_schedule_info(self, html):
"""
通过正则从获取到的html页面数据中的表头和各行数据
:param html 爬取到的页面数据
:return: heads表头
datas 列表内容
"""
# 1. 正则匹配数据所在的table
table = re.search('<table.*?id="schedule" data-cols-to-freeze=",1">(.*?)</table>', html, re.S).group(1)
table = table + "</tbody>"
# 2. 正则从table中匹配出表头
head = re.search('<thead>(.*?)</thead>', table, re.S).group(1)
heads = re.findall('<th.*?>(.*?)</th>', head, re.S)
# 3. 正则从table中匹配出表的各行数据
datas = self.get_schedule_datas(table)
return heads, datas
def parse_advanced_team(self, html):
"""
通过xpath从获取到的html页面数据中表头和各行数据
:param html 爬取到的页面数据
:return: heads表头
datas 列表内容
"""
selector = Selector(text=html)
# 1. 获取对应的table
table = selector.xpath('//table[@id="advanced-team"]')
# 2. 从table中匹配出表头
res = table.xpath('./thead/tr')[1].xpath('./th/text()').getall()
heads = []
for i, head in enumerate(res):
if '\xa0' in head:
continue
heads.append(head)
# 3. 匹配出表的各行数据
table_data = self.get_advanced_team_datas(table)
return heads, table_data
# 存储成csv文件
def save_csv(self, title, heads, rows):
f = open(title + '.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.writer(f)
csv_writer.writerow(heads)
for row in rows:
csv_writer.writerow(row)
f.close()
def crawl_team_opponent(self):
# 1. 发送请求
res = self.send(self.url)
# 2. 解析数据
team_heads, team_datas, opponent_heads, opponent_datas = self.parse(res)
# 3. 保存数据为csv
self.save_csv("team", team_heads, team_datas)
self.save_csv("opponent", opponent_heads, opponent_datas)
def crawl_schedule(self):
months = ["october", "november", "december", "january", "february", "march", "april", "may", "june"]
for month in months:
html = self.send(self.schedule_url.format(month))
# print(html)
heads, datas = self.parse_schedule_info(html)
# 3. 保存数据为csv
self.save_csv("schedule_"+month, heads, datas)
def crawl_advanced_team(self):
# 1. 发送请求
res = self.send(self.advanced_team_url)
# 2. 解析数据
heads, datas = self.parse_advanced_team(res)
# 3. 保存数据为csv
self.save_csv("advanced_team", heads, datas)
def crawl(self):
# 1. 爬取各队伍信息
# self.crawl_team_opponent()
# 2. 爬取计划表
# self.crawl_schedule()
# 3. 爬取Advanced Team表
self.crawl_advanced_team()
if __name__ == '__main__':
# 运行爬虫
spider = NBASpider()
spider.crawl()

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 804 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

File diff suppressed because one or more lines are too long

@ -0,0 +1,769 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('echarts')) :
typeof define === 'function' && define.amd ? define(['exports', 'echarts'], factory) :
(factory((global.bmap = {}),global.echarts));
}(this, (function (exports,echarts) { 'use strict';
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/* global BMap */
function BMapCoordSys(bmap, api) {
this._bmap = bmap;
this.dimensions = ['lng', 'lat'];
this._mapOffset = [0, 0];
this._api = api;
this._projection = new BMap.MercatorProjection();
}
BMapCoordSys.prototype.dimensions = ['lng', 'lat'];
BMapCoordSys.prototype.setZoom = function (zoom) {
this._zoom = zoom;
};
BMapCoordSys.prototype.setCenter = function (center) {
this._center = this._projection.lngLatToPoint(new BMap.Point(center[0], center[1]));
};
BMapCoordSys.prototype.setMapOffset = function (mapOffset) {
this._mapOffset = mapOffset;
};
BMapCoordSys.prototype.getBMap = function () {
return this._bmap;
};
BMapCoordSys.prototype.dataToPoint = function (data) {
var point = new BMap.Point(data[0], data[1]);
// TODO mercator projection is toooooooo slow
// var mercatorPoint = this._projection.lngLatToPoint(point);
// var width = this._api.getZr().getWidth();
// var height = this._api.getZr().getHeight();
// var divider = Math.pow(2, 18 - 10);
// return [
// Math.round((mercatorPoint.x - this._center.x) / divider + width / 2),
// Math.round((this._center.y - mercatorPoint.y) / divider + height / 2)
// ];
var px = this._bmap.pointToOverlayPixel(point);
var mapOffset = this._mapOffset;
return [px.x - mapOffset[0], px.y - mapOffset[1]];
};
BMapCoordSys.prototype.pointToData = function (pt) {
var mapOffset = this._mapOffset;
var pt = this._bmap.overlayPixelToPoint({
x: pt[0] + mapOffset[0],
y: pt[1] + mapOffset[1]
});
return [pt.lng, pt.lat];
};
BMapCoordSys.prototype.getViewRect = function () {
var api = this._api;
return new echarts.graphic.BoundingRect(0, 0, api.getWidth(), api.getHeight());
};
BMapCoordSys.prototype.getRoamTransform = function () {
return echarts.matrix.create();
};
BMapCoordSys.prototype.prepareCustoms = function (data) {
var rect = this.getViewRect();
return {
coordSys: {
// The name exposed to user is always 'cartesian2d' but not 'grid'.
type: 'bmap',
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height
},
api: {
coord: echarts.util.bind(this.dataToPoint, this),
size: echarts.util.bind(dataToCoordSize, this)
}
};
};
function dataToCoordSize(dataSize, dataItem) {
dataItem = dataItem || [0, 0];
return echarts.util.map([0, 1], function (dimIdx) {
var val = dataItem[dimIdx];
var halfSize = dataSize[dimIdx] / 2;
var p1 = [];
var p2 = [];
p1[dimIdx] = val - halfSize;
p2[dimIdx] = val + halfSize;
p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx];
return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]);
}, this);
}
var Overlay;
// For deciding which dimensions to use when creating list data
BMapCoordSys.dimensions = BMapCoordSys.prototype.dimensions;
function createOverlayCtor() {
function Overlay(root) {
this._root = root;
}
Overlay.prototype = new BMap.Overlay();
/**
* 初始化
*
* @param {BMap.Map} map
* @override
*/
Overlay.prototype.initialize = function (map) {
map.getPanes().labelPane.appendChild(this._root);
return this._root;
};
/**
* @override
*/
Overlay.prototype.draw = function () {};
return Overlay;
}
BMapCoordSys.create = function (ecModel, api) {
var bmapCoordSys;
var root = api.getDom();
// TODO Dispose
ecModel.eachComponent('bmap', function (bmapModel) {
var painter = api.getZr().painter;
var viewportRoot = painter.getViewportRoot();
if (typeof BMap === 'undefined') {
throw new Error('BMap api is not loaded');
}
Overlay = Overlay || createOverlayCtor();
if (bmapCoordSys) {
throw new Error('Only one bmap component can exist');
}
if (!bmapModel.__bmap) {
// Not support IE8
var bmapRoot = root.querySelector('.ec-extension-bmap');
if (bmapRoot) {
// Reset viewport left and top, which will be changed
// in moving handler in BMapView
viewportRoot.style.left = '0px';
viewportRoot.style.top = '0px';
root.removeChild(bmapRoot);
}
bmapRoot = document.createElement('div');
bmapRoot.style.cssText = 'width:100%;height:100%';
// Not support IE8
bmapRoot.classList.add('ec-extension-bmap');
root.appendChild(bmapRoot);
var bmap = bmapModel.__bmap = new BMap.Map(bmapRoot);
var overlay = new Overlay(viewportRoot);
bmap.addOverlay(overlay);
// Override
painter.getViewportRootOffset = function () {
return {offsetLeft: 0, offsetTop: 0};
};
}
var bmap = bmapModel.__bmap;
// Set bmap options
// centerAndZoom before layout and render
var center = bmapModel.get('center');
var zoom = bmapModel.get('zoom');
if (center && zoom) {
var pt = new BMap.Point(center[0], center[1]);
bmap.centerAndZoom(pt, zoom);
}
bmapCoordSys = new BMapCoordSys(bmap, api);
bmapCoordSys.setMapOffset(bmapModel.__mapOffset || [0, 0]);
bmapCoordSys.setZoom(zoom);
bmapCoordSys.setCenter(center);
bmapModel.coordinateSystem = bmapCoordSys;
});
ecModel.eachSeries(function (seriesModel) {
if (seriesModel.get('coordinateSystem') === 'bmap') {
seriesModel.coordinateSystem = bmapCoordSys;
}
});
};
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
function v2Equal(a, b) {
return a && b && a[0] === b[0] && a[1] === b[1];
}
echarts.extendComponentModel({
type: 'bmap',
getBMap: function () {
// __bmap is injected when creating BMapCoordSys
return this.__bmap;
},
setCenterAndZoom: function (center, zoom) {
this.option.center = center;
this.option.zoom = zoom;
},
centerOrZoomChanged: function (center, zoom) {
var option = this.option;
return !(v2Equal(center, option.center) && zoom === option.zoom);
},
defaultOption: {
center: [104.114129, 37.550339],
zoom: 5,
mapStyle: {},
mapStyleV2: {},
roam: false
}
});
/**
* @module zrender/core/util
*/
// 用于处理merge时无法遍历Date等对象的问题
var BUILTIN_OBJECT = {
'[object Function]': 1,
'[object RegExp]': 1,
'[object Date]': 1,
'[object Error]': 1,
'[object CanvasGradient]': 1,
'[object CanvasPattern]': 1,
// For node-canvas
'[object Image]': 1,
'[object Canvas]': 1
};
var TYPED_ARRAY = {
'[object Int8Array]': 1,
'[object Uint8Array]': 1,
'[object Uint8ClampedArray]': 1,
'[object Int16Array]': 1,
'[object Uint16Array]': 1,
'[object Int32Array]': 1,
'[object Uint32Array]': 1,
'[object Float32Array]': 1,
'[object Float64Array]': 1
};
var objToString = Object.prototype.toString;
/**
* Those data types can be cloned:
* Plain object, Array, TypedArray, number, string, null, undefined.
* Those data types will be assgined using the orginal data:
* BUILTIN_OBJECT
* Instance of user defined class will be cloned to a plain object, without
* properties in prototype.
* Other data types is not supported (not sure what will happen).
*
* Caution: do not support clone Date, for performance consideration.
* (There might be a large number of date in `series.data`).
* So date should not be modified in and out of echarts.
*
* @param {*} source
* @return {*} new
*/
function clone(source) {
if (source == null || typeof source !== 'object') {
return source;
}
var result = source;
var typeStr = objToString.call(source);
if (typeStr === '[object Array]') {
if (!isPrimitive(source)) {
result = [];
for (var i = 0, len = source.length; i < len; i++) {
result[i] = clone(source[i]);
}
}
}
else if (TYPED_ARRAY[typeStr]) {
if (!isPrimitive(source)) {
var Ctor = source.constructor;
if (source.constructor.from) {
result = Ctor.from(source);
}
else {
result = new Ctor(source.length);
for (var i = 0, len = source.length; i < len; i++) {
result[i] = clone(source[i]);
}
}
}
}
else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {
result = {};
for (var key in source) {
if (source.hasOwnProperty(key)) {
result[key] = clone(source[key]);
}
}
}
return result;
}
/**
* @memberOf module:zrender/core/util
* @param {*} target
* @param {*} source
* @param {boolean} [overwrite=false]
*/
/**
* @param {Array} targetAndSources The first item is target, and the rests are source.
* @param {boolean} [overwrite=false]
* @return {*} target
*/
/**
* @param {*} target
* @param {*} source
* @memberOf module:zrender/core/util
*/
/**
* @param {*} target
* @param {*} source
* @param {boolean} [overlay=false]
* @memberOf module:zrender/core/util
*/
/**
* 查询数组中元素的index
* @memberOf module:zrender/core/util
*/
/**
* 构造类继承关系
*
* @memberOf module:zrender/core/util
* @param {Function} clazz 源类
* @param {Function} baseClazz 基类
*/
/**
* @memberOf module:zrender/core/util
* @param {Object|Function} target
* @param {Object|Function} sorce
* @param {boolean} overlay
*/
/**
* Consider typed array.
* @param {Array|TypedArray} data
*/
/**
* 数组或对象遍历
* @memberOf module:zrender/core/util
* @param {Object|Array} obj
* @param {Function} cb
* @param {*} [context]
*/
/**
* 数组映射
* @memberOf module:zrender/core/util
* @param {Array} obj
* @param {Function} cb
* @param {*} [context]
* @return {Array}
*/
/**
* @memberOf module:zrender/core/util
* @param {Array} obj
* @param {Function} cb
* @param {Object} [memo]
* @param {*} [context]
* @return {Array}
*/
/**
* 数组过滤
* @memberOf module:zrender/core/util
* @param {Array} obj
* @param {Function} cb
* @param {*} [context]
* @return {Array}
*/
/**
* 数组项查找
* @memberOf module:zrender/core/util
* @param {Array} obj
* @param {Function} cb
* @param {*} [context]
* @return {*}
*/
/**
* @memberOf module:zrender/core/util
* @param {Function} func
* @param {*} context
* @return {Function}
*/
/**
* @memberOf module:zrender/core/util
* @param {Function} func
* @return {Function}
*/
/**
* @memberOf module:zrender/core/util
* @param {*} value
* @return {boolean}
*/
/**
* @memberOf module:zrender/core/util
* @param {*} value
* @return {boolean}
*/
/**
* @memberOf module:zrender/core/util
* @param {*} value
* @return {boolean}
*/
/**
* @memberOf module:zrender/core/util
* @param {*} value
* @return {boolean}
*/
/**
* @memberOf module:zrender/core/util
* @param {*} value
* @return {boolean}
*/
/**
* @memberOf module:zrender/core/util
* @param {*} value
* @return {boolean}
*/
/**
* @memberOf module:zrender/core/util
* @param {*} value
* @return {boolean}
*/
function isDom(value) {
return typeof value === 'object'
&& typeof value.nodeType === 'number'
&& typeof value.ownerDocument === 'object';
}
/**
* Whether is exactly NaN. Notice isNaN('a') returns true.
* @param {*} value
* @return {boolean}
*/
/**
* If value1 is not null, then return value1, otherwise judget rest of values.
* Low performance.
* @memberOf module:zrender/core/util
* @return {*} Final value
*/
/**
* @memberOf module:zrender/core/util
* @param {Array} arr
* @param {number} startIndex
* @param {number} endIndex
* @return {Array}
*/
/**
* Normalize css liked array configuration
* e.g.
* 3 => [3, 3, 3, 3]
* [4, 2] => [4, 2, 4, 2]
* [4, 3, 2] => [4, 3, 2, 3]
* @param {number|Array.<number>} val
* @return {Array.<number>}
*/
/**
* @memberOf module:zrender/core/util
* @param {boolean} condition
* @param {string} message
*/
/**
* @memberOf module:zrender/core/util
* @param {string} str string to be trimed
* @return {string} trimed string
*/
var primitiveKey = '__ec_primitive__';
/**
* Set an object as primitive to be ignored traversing children in clone or merge
*/
function isPrimitive(obj) {
return obj[primitiveKey];
}
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
echarts.extendComponentView({
type: 'bmap',
render: function (bMapModel, ecModel, api) {
var rendering = true;
var bmap = bMapModel.getBMap();
var viewportRoot = api.getZr().painter.getViewportRoot();
var coordSys = bMapModel.coordinateSystem;
var moveHandler = function (type, target) {
if (rendering) {
return;
}
var offsetEl = viewportRoot.parentNode.parentNode.parentNode;
var mapOffset = [
-parseInt(offsetEl.style.left, 10) || 0,
-parseInt(offsetEl.style.top, 10) || 0
];
viewportRoot.style.left = mapOffset[0] + 'px';
viewportRoot.style.top = mapOffset[1] + 'px';
coordSys.setMapOffset(mapOffset);
bMapModel.__mapOffset = mapOffset;
api.dispatchAction({
type: 'bmapRoam'
});
};
function zoomEndHandler() {
if (rendering) {
return;
}
api.dispatchAction({
type: 'bmapRoam'
});
}
bmap.removeEventListener('moving', this._oldMoveHandler);
// FIXME
// Moveend may be triggered by centerAndZoom method when creating coordSys next time
// bmap.removeEventListener('moveend', this._oldMoveHandler);
bmap.removeEventListener('zoomend', this._oldZoomEndHandler);
bmap.addEventListener('moving', moveHandler);
// bmap.addEventListener('moveend', moveHandler);
bmap.addEventListener('zoomend', zoomEndHandler);
this._oldMoveHandler = moveHandler;
this._oldZoomEndHandler = zoomEndHandler;
var roam = bMapModel.get('roam');
if (roam && roam !== 'scale') {
bmap.enableDragging();
}
else {
bmap.disableDragging();
}
if (roam && roam !== 'move') {
bmap.enableScrollWheelZoom();
bmap.enableDoubleClickZoom();
bmap.enablePinchToZoom();
}
else {
bmap.disableScrollWheelZoom();
bmap.disableDoubleClickZoom();
bmap.disablePinchToZoom();
}
/* map 2.0 */
var originalStyle = bMapModel.__mapStyle;
var newMapStyle = bMapModel.get('mapStyle') || {};
// FIXME, Not use JSON methods
var mapStyleStr = JSON.stringify(newMapStyle);
if (JSON.stringify(originalStyle) !== mapStyleStr) {
// FIXME May have blank tile when dragging if setMapStyle
if (Object.keys(newMapStyle).length) {
bmap.setMapStyle(clone(newMapStyle));
}
bMapModel.__mapStyle = JSON.parse(mapStyleStr);
}
/* map 3.0 */
var originalStyle2 = bMapModel.__mapStyle2;
var newMapStyle2 = bMapModel.get('mapStyleV2') || {};
// FIXME, Not use JSON methods
var mapStyleStr2 = JSON.stringify(newMapStyle2);
if (JSON.stringify(originalStyle2) !== mapStyleStr2) {
// FIXME May have blank tile when dragging if setMapStyle
if (Object.keys(newMapStyle2).length) {
bmap.setMapStyleV2(clone(newMapStyle2));
}
bMapModel.__mapStyle2 = JSON.parse(mapStyleStr2);
}
rendering = false;
}
});
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* BMap component extension
*/
echarts.registerCoordinateSystem('bmap', BMapCoordSys);
// Action
echarts.registerAction({
type: 'bmapRoam',
event: 'bmapRoam',
update: 'updateLayout'
}, function (payload, ecModel) {
ecModel.eachComponent('bmap', function (bMapModel) {
var bmap = bMapModel.getBMap();
var center = bmap.getCenter();
bMapModel.setCenterAndZoom([center.lng, center.lat], bmap.getZoom());
});
});
var version = '1.0.0';
exports.version = version;
})));
//# sourceMappingURL=bmap.js.map

File diff suppressed because one or more lines are too long

@ -0,0 +1,515 @@
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['exports', 'echarts'], factory);
} else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
// CommonJS
factory(exports, require('echarts'));
} else {
// Browser globals
factory({}, root.echarts);
}
}(this, function (exports, echarts) {
var log = function (msg) {
if (typeof console !== 'undefined') {
console && console.error && console.error(msg);
}
};
if (!echarts) {
log('ECharts is not Loaded');
return;
}
echarts.registerTheme('chalk', {
"color": [
"#fc97af",
"#87f7cf",
"#f7f494",
"#72ccff",
"#f7c5a0",
"#d4a4eb",
"#d2f5a6",
"#76f2f2"
],
"backgroundColor": "rgba(41,52,65,1)",
"textStyle": {},
"title": {
"textStyle": {
"color": "#ffffff"
},
"subtextStyle": {
"color": "#dddddd"
}
},
"line": {
"itemStyle": {
"normal": {
"borderWidth": "4"
}
},
"lineStyle": {
"normal": {
"width": "3"
}
},
"symbolSize": "0",
"symbol": "circle",
"smooth": true
},
"radar": {
"itemStyle": {
"normal": {
"borderWidth": "4"
}
},
"lineStyle": {
"normal": {
"width": "3"
}
},
"symbolSize": "0",
"symbol": "circle",
"smooth": true
},
"bar": {
"itemStyle": {
"normal": {
"barBorderWidth": 0,
"barBorderColor": "#ccc"
},
"emphasis": {
"barBorderWidth": 0,
"barBorderColor": "#ccc"
}
}
},
"pie": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"scatter": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"boxplot": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"parallel": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"sankey": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"funnel": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"gauge": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"candlestick": {
"itemStyle": {
"normal": {
"color": "#fc97af",
"color0": "transparent",
"borderColor": "#fc97af",
"borderColor0": "#87f7cf",
"borderWidth": "2"
}
}
},
"graph": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
}
},
"lineStyle": {
"normal": {
"width": "1",
"color": "#ffffff"
}
},
"symbolSize": "0",
"symbol": "circle",
"smooth": true,
"color": [
"#fc97af",
"#87f7cf",
"#f7f494",
"#72ccff",
"#f7c5a0",
"#d4a4eb",
"#d2f5a6",
"#76f2f2"
],
"label": {
"normal": {
"textStyle": {
"color": "#293441"
}
}
}
},
"map": {
"itemStyle": {
"normal": {
"areaColor": "#f3f3f3",
"borderColor": "#999999",
"borderWidth": 0.5
},
"emphasis": {
"areaColor": "rgba(255,178,72,1)",
"borderColor": "#eb8146",
"borderWidth": 1
}
},
"label": {
"normal": {
"textStyle": {
"color": "#893448"
}
},
"emphasis": {
"textStyle": {
"color": "rgb(137,52,72)"
}
}
}
},
"geo": {
"itemStyle": {
"normal": {
"areaColor": "#f3f3f3",
"borderColor": "#999999",
"borderWidth": 0.5
},
"emphasis": {
"areaColor": "rgba(255,178,72,1)",
"borderColor": "#eb8146",
"borderWidth": 1
}
},
"label": {
"normal": {
"textStyle": {
"color": "#893448"
}
},
"emphasis": {
"textStyle": {
"color": "rgb(137,52,72)"
}
}
}
},
"categoryAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#666666"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#aaaaaa"
}
},
"splitLine": {
"show": false,
"lineStyle": {
"color": [
"#e6e6e6"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"valueAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#666666"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#aaaaaa"
}
},
"splitLine": {
"show": false,
"lineStyle": {
"color": [
"#e6e6e6"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"logAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#666666"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#aaaaaa"
}
},
"splitLine": {
"show": false,
"lineStyle": {
"color": [
"#e6e6e6"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"timeAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#666666"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#aaaaaa"
}
},
"splitLine": {
"show": false,
"lineStyle": {
"color": [
"#e6e6e6"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"toolbox": {
"iconStyle": {
"normal": {
"borderColor": "#999999"
},
"emphasis": {
"borderColor": "#666666"
}
}
},
"legend": {
"textStyle": {
"color": "#999999"
}
},
"tooltip": {
"axisPointer": {
"lineStyle": {
"color": "#cccccc",
"width": 1
},
"crossStyle": {
"color": "#cccccc",
"width": 1
}
}
},
"timeline": {
"lineStyle": {
"color": "#87f7cf",
"width": 1
},
"itemStyle": {
"normal": {
"color": "#87f7cf",
"borderWidth": 1
},
"emphasis": {
"color": "#f7f494"
}
},
"controlStyle": {
"normal": {
"color": "#87f7cf",
"borderColor": "#87f7cf",
"borderWidth": 0.5
},
"emphasis": {
"color": "#87f7cf",
"borderColor": "#87f7cf",
"borderWidth": 0.5
}
},
"checkpointStyle": {
"color": "#fc97af",
"borderColor": "rgba(252,151,175,0.3)"
},
"label": {
"normal": {
"textStyle": {
"color": "#87f7cf"
}
},
"emphasis": {
"textStyle": {
"color": "#87f7cf"
}
}
}
},
"visualMap": {
"color": [
"#fc97af",
"#87f7cf"
]
},
"dataZoom": {
"backgroundColor": "rgba(255,255,255,0)",
"dataBackgroundColor": "rgba(114,204,255,1)",
"fillerColor": "rgba(114,204,255,0.2)",
"handleColor": "#72ccff",
"handleSize": "100%",
"textStyle": {
"color": "#333333"
}
},
"markPoint": {
"label": {
"normal": {
"textStyle": {
"color": "#293441"
}
},
"emphasis": {
"textStyle": {
"color": "#293441"
}
}
}
}
});
}));

@ -0,0 +1,22 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("echarts")):"function"==typeof define&&define.amd?define(["exports","echarts"],t):t(e.dataTool={},e.echarts)}(this,function(e,t){"use strict";var i=Array.prototype.map;function l(e,t,r){if(e&&t){if(e.map&&e.map===i)return e.map(t,r);for(var a=[],o=0,n=e.length;o<n;o++)a.push(t.call(r,e[o],o,e));return a}}function v(e,t){return e.getAttribute(t)}function d(e,t){for(var r=e.firstChild;r;){if(1===r.nodeType&&r.nodeName.toLowerCase()===t.toLowerCase())return r;r=r.nextSibling}return null}function g(e,t){for(var r=e.firstChild,a=[];r;)r.nodeName.toLowerCase()===t.toLowerCase()&&a.push(r),r=r.nextSibling;return a}var r=(Object.freeze||Object)({parse:function(e){var t;if(!(t="string"==typeof e?(new DOMParser).parseFromString(e,"text/xml"):e)||t.getElementsByTagName("parsererror").length)return null;var r=d(t,"gexf");if(!r)return null;for(var a=d(r,"graph"),o=function(e){return e?l(g(e,"attribute"),function(e){return{id:v(e,"id"),title:v(e,"title"),type:v(e,"type")}}):[]}(d(a,"attributes")),n={},i=0;i<o.length;i++)n[o[i].id]=o[i];return{nodes:function(e,p){return e?l(g(e,"node"),function(e){var t={id:v(e,"id"),name:v(e,"label"),itemStyle:{normal:{}}},r=d(e,"viz:size"),a=d(e,"viz:position"),o=d(e,"viz:color"),n=d(e,"attvalues");if(r&&(t.symbolSize=parseFloat(v(r,"value"))),a&&(t.x=parseFloat(v(a,"x")),t.y=parseFloat(v(a,"y"))),o&&(t.itemStyle.normal.color="rgb("+[0|v(o,"r"),0|v(o,"g"),0|v(o,"b")].join(",")+")"),n){var i=g(n,"attvalue");t.attributes={};for(var l=0;l<i.length;l++){var u=i[l],s=v(u,"for"),f=v(u,"value"),c=p[s];if(c){switch(c.type){case"integer":case"long":f=parseInt(f,10);break;case"float":case"double":f=parseFloat(f);break;case"boolean":f="true"===f.toLowerCase()}t.attributes[s]=f}}}return t}):[]}(d(a,"nodes"),n),links:function(e){return e?l(g(e,"edge"),function(e){var t={id:v(e,"id"),name:v(e,"label"),source:v(e,"source"),target:v(e,"target"),lineStyle:{normal:{}}},r=t.lineStyle.normal,a=d(e,"viz:thickness"),o=d(e,"viz:color");return a&&(r.width=parseFloat(a.getAttribute("value"))),o&&(r.color="rgb("+[0|v(o,"r"),0|v(o,"g"),0|v(o,"b")].join(",")+")"),t}):[]}(d(a,"edges"))}}});function w(e,t){var r=(e.length-1)*t+1,a=Math.floor(r),o=+e[a-1],n=r-a;return n?o+n*(e[a]-o):o}function a(e,t){for(var r,a=[],o=[],n=[],i=(t=t||[]).boundIQR,l="none"===i||0===i,u=0;u<e.length;u++){n.push(u+"");var s=((r=e[u].slice()).sort(function(e,t){return e-t}),r),f=w(s,.25),c=w(s,.5),p=w(s,.75),v=s[0],d=s[s.length-1],g=(null==i?1.5:i)*(p-f),h=l?v:Math.max(v,f-g),b=l?d:Math.min(d,p+g);a.push([h,f,c,p,b]);for(var m=0;m<s.length;m++){var y=s[m];if(y<h||b<y){var x=[u,y];"vertical"===t.layout&&x.reverse(),o.push(x)}}}return{boxData:a,outliers:o,axisData:n}}var o="1.0.0";t.dataTool&&(t.dataTool.version=o,t.dataTool.gexf=r,t.dataTool.prepareBoxplotData=a),e.version=o,e.gexf=r,e.prepareBoxplotData=a});

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -0,0 +1,197 @@
/**
* Template Name: Day - v2.1.0
* Template URL: https://bootstrapmade.com/day-multipurpose-html-template-for-free/
* Author: BootstrapMade.com
* License: https://bootstrapmade.com/license/
*/
!(function($) {
"use strict";
// Preloader
$(window).on('load', function() {
if ($('#preloader').length) {
$('#preloader').delay(100).fadeOut('slow', function() {
$(this).remove();
});
}
});
// Smooth scroll for the navigation menu and links with .scrollto classes
var scrolltoOffset = $('#header').outerHeight() - 1;
$(document).on('click', '.nav-menu a, .mobile-nav a, .scrollto', function(e) {
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
var target = $(this.hash);
if (target.length) {
e.preventDefault();
var scrollto = target.offset().top - scrolltoOffset;
if ($(this).attr("href") == '#header') {
scrollto = 0;
}
$('html, body').animate({
scrollTop: scrollto
}, 1500, 'easeInOutExpo');
if ($(this).parents('.nav-menu, .mobile-nav').length) {
$('.nav-menu .active, .mobile-nav .active').removeClass('active');
$(this).closest('li').addClass('active');
}
if ($('body').hasClass('mobile-nav-active')) {
$('body').removeClass('mobile-nav-active');
$('.mobile-nav-toggle i').toggleClass('icofont-navigation-menu icofont-close');
$('.mobile-nav-overly').fadeOut();
}
return false;
}
}
});
// Activate smooth scroll on page load with hash links in the url
$(document).ready(function() {
if (window.location.hash) {
var initial_nav = window.location.hash;
if ($(initial_nav).length) {
var scrollto = $(initial_nav).offset().top - scrolltoOffset;
$('html, body').animate({
scrollTop: scrollto
}, 1500, 'easeInOutExpo');
}
}
});
// Mobile Navigation
if ($('.nav-menu').length) {
var $mobile_nav = $('.nav-menu').clone().prop({
class: 'mobile-nav d-lg-none'
});
$('body').append($mobile_nav);
$('body').prepend('<button type="button" class="mobile-nav-toggle d-lg-none"><i class="icofont-navigation-menu"></i></button>');
$('body').append('<div class="mobile-nav-overly"></div>');
$(document).on('click', '.mobile-nav-toggle', function(e) {
$('body').toggleClass('mobile-nav-active');
$('.mobile-nav-toggle i').toggleClass('icofont-navigation-menu icofont-close');
$('.mobile-nav-overly').toggle();
});
$(document).on('click', '.mobile-nav .drop-down > a', function(e) {
e.preventDefault();
$(this).next().slideToggle(300);
$(this).parent().toggleClass('active');
});
$(document).click(function(e) {
var container = $(".mobile-nav, .mobile-nav-toggle");
if (!container.is(e.target) && container.has(e.target).length === 0) {
if ($('body').hasClass('mobile-nav-active')) {
$('body').removeClass('mobile-nav-active');
$('.mobile-nav-toggle i').toggleClass('icofont-navigation-menu icofont-close');
$('.mobile-nav-overly').fadeOut();
}
}
});
} else if ($(".mobile-nav, .mobile-nav-toggle").length) {
$(".mobile-nav, .mobile-nav-toggle").hide();
}
// Navigation active state on scroll
var nav_sections = $('section');
var main_nav = $('.nav-menu, #mobile-nav');
$(window).on('scroll', function() {
var cur_pos = $(this).scrollTop() + 200;
nav_sections.each(function() {
var top = $(this).offset().top,
bottom = top + $(this).outerHeight();
if (cur_pos >= top && cur_pos <= bottom) {
if (cur_pos <= bottom) {
main_nav.find('li').removeClass('active');
}
main_nav.find('a[href="#' + $(this).attr('id') + '"]').parent('li').addClass('active');
}
if (cur_pos < 300) {
$(".nav-menu ul:first li:first").addClass('active');
}
});
});
// Toggle .header-scrolled class to #header when page is scrolled
$(window).scroll(function() {
if ($(this).scrollTop() > 100) {
$('#header').addClass('header-scrolled');
$('#topbar').addClass('topbar-scrolled');
} else {
$('#header').removeClass('header-scrolled');
$('#topbar').removeClass('topbar-scrolled');
}
});
if ($(window).scrollTop() > 100) {
$('#header').addClass('header-scrolled');
$('#topbar').addClass('topbar-scrolled');
}
// Back to top button
$(window).scroll(function() {
if ($(this).scrollTop() > 100) {
$('.back-to-top').fadeIn('slow');
} else {
$('.back-to-top').fadeOut('slow');
}
});
$('.back-to-top').click(function() {
$('html, body').animate({
scrollTop: 0
}, 1500, 'easeInOutExpo');
return false;
});
// Porfolio isotope and filter
$(window).on('load', function() {
var portfolioIsotope = $('.portfolio-container').isotope({
itemSelector: '.portfolio-item'
});
$('#portfolio-flters li').on('click', function() {
$("#portfolio-flters li").removeClass('filter-active');
$(this).addClass('filter-active');
portfolioIsotope.isotope({
filter: $(this).data('filter')
});
aos_init();
});
// Initiate venobox (lightbox feature used in portofilo)
$(document).ready(function() {
$('.venobox').venobox();
});
});
// Portfolio details carousel
$(".portfolio-details-carousel").owlCarousel({
autoplay: true,
dots: true,
loop: true,
items: 1
});
// Init AOS
function aos_init() {
AOS.init({
duration: 1000,
easing: "ease-in-out",
once: true
});
}
$(window).on('load', function() {
aos_init();
});
})(jQuery);

@ -0,0 +1,511 @@
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['exports', 'echarts'], factory);
} else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
// CommonJS
factory(exports, require('echarts'));
} else {
// Browser globals
factory({}, root.echarts);
}
}(this, function (exports, echarts) {
var log = function (msg) {
if (typeof console !== 'undefined') {
console && console.error && console.error(msg);
}
};
if (!echarts) {
log('ECharts is not Loaded');
return;
}
echarts.registerTheme('walden', {
"color": [
"#3fb1e3",
"#6be6c1",
"#626c91",
"#a0a7e6",
"#c4ebad",
"#96dee8"
],
"backgroundColor": "rgba(252,252,252,0)",
"textStyle": {},
"title": {
"textStyle": {
"color": "#666666"
},
"subtextStyle": {
"color": "#999999"
}
},
"line": {
"itemStyle": {
"normal": {
"borderWidth": "2"
}
},
"lineStyle": {
"normal": {
"width": "3"
}
},
"symbolSize": "8",
"symbol": "emptyCircle",
"smooth": false
},
"radar": {
"itemStyle": {
"normal": {
"borderWidth": "2"
}
},
"lineStyle": {
"normal": {
"width": "3"
}
},
"symbolSize": "8",
"symbol": "emptyCircle",
"smooth": false
},
"bar": {
"itemStyle": {
"normal": {
"barBorderWidth": 0,
"barBorderColor": "#ccc"
},
"emphasis": {
"barBorderWidth": 0,
"barBorderColor": "#ccc"
}
}
},
"pie": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"scatter": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"boxplot": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"parallel": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"sankey": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"funnel": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"gauge": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"candlestick": {
"itemStyle": {
"normal": {
"color": "#e6a0d2",
"color0": "transparent",
"borderColor": "#e6a0d2",
"borderColor0": "#3fb1e3",
"borderWidth": "2"
}
}
},
"graph": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
}
},
"lineStyle": {
"normal": {
"width": "1",
"color": "#cccccc"
}
},
"symbolSize": "8",
"symbol": "emptyCircle",
"smooth": false,
"color": [
"#3fb1e3",
"#6be6c1",
"#626c91",
"#a0a7e6",
"#c4ebad",
"#96dee8"
],
"label": {
"normal": {
"textStyle": {
"color": "#ffffff"
}
}
}
},
"map": {
"itemStyle": {
"normal": {
"areaColor": "#eeeeee",
"borderColor": "#aaaaaa",
"borderWidth": 0.5
},
"emphasis": {
"areaColor": "rgba(63,177,227,0.25)",
"borderColor": "#3fb1e3",
"borderWidth": 1
}
},
"label": {
"normal": {
"textStyle": {
"color": "#ffffff"
}
},
"emphasis": {
"textStyle": {
"color": "#3fb1e3"
}
}
}
},
"geo": {
"itemStyle": {
"normal": {
"areaColor": "#eeeeee",
"borderColor": "#aaaaaa",
"borderWidth": 0.5
},
"emphasis": {
"areaColor": "rgba(63,177,227,0.25)",
"borderColor": "#3fb1e3",
"borderWidth": 1
}
},
"label": {
"normal": {
"textStyle": {
"color": "#ffffff"
}
},
"emphasis": {
"textStyle": {
"color": "#3fb1e3"
}
}
}
},
"categoryAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#cccccc"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#999999"
}
},
"splitLine": {
"show": true,
"lineStyle": {
"color": [
"#eeeeee"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"valueAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#cccccc"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#999999"
}
},
"splitLine": {
"show": true,
"lineStyle": {
"color": [
"#eeeeee"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"logAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#cccccc"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#999999"
}
},
"splitLine": {
"show": true,
"lineStyle": {
"color": [
"#eeeeee"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"timeAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#cccccc"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#999999"
}
},
"splitLine": {
"show": true,
"lineStyle": {
"color": [
"#eeeeee"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"toolbox": {
"iconStyle": {
"normal": {
"borderColor": "#999999"
},
"emphasis": {
"borderColor": "#666666"
}
}
},
"legend": {
"textStyle": {
"color": "#999999"
}
},
"tooltip": {
"axisPointer": {
"lineStyle": {
"color": "#cccccc",
"width": 1
},
"crossStyle": {
"color": "#cccccc",
"width": 1
}
}
},
"timeline": {
"lineStyle": {
"color": "#626c91",
"width": 1
},
"itemStyle": {
"normal": {
"color": "#626c91",
"borderWidth": 1
},
"emphasis": {
"color": "#626c91"
}
},
"controlStyle": {
"normal": {
"color": "#626c91",
"borderColor": "#626c91",
"borderWidth": 0.5
},
"emphasis": {
"color": "#626c91",
"borderColor": "#626c91",
"borderWidth": 0.5
}
},
"checkpointStyle": {
"color": "#3fb1e3",
"borderColor": "rgba(63,177,227,0.15)"
},
"label": {
"normal": {
"textStyle": {
"color": "#626c91"
}
},
"emphasis": {
"textStyle": {
"color": "#626c91"
}
}
}
},
"visualMap": {
"color": [
"#2a99c9",
"#afe8ff"
]
},
"dataZoom": {
"backgroundColor": "rgba(255,255,255,0)",
"dataBackgroundColor": "rgba(222,222,222,1)",
"fillerColor": "rgba(114,230,212,0.25)",
"handleColor": "#cccccc",
"handleSize": "100%",
"textStyle": {
"color": "#999999"
}
},
"markPoint": {
"label": {
"normal": {
"textStyle": {
"color": "#ffffff"
}
},
"emphasis": {
"textStyle": {
"color": "#ffffff"
}
}
}
}
});
}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,325 @@
/*!
* Bootstrap Reboot v4.5.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
display: block;
}
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
}
[tabindex="-1"]:focus:not(:focus-visible) {
outline: 0 !important;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: 0.5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -.25em;
}
sup {
top: -.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:not([href]) {
color: inherit;
text-decoration: none;
}
a:not([href]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
-ms-overflow-style: scrollbar;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
}
svg {
overflow: hidden;
vertical-align: middle;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
}
label {
display: inline-block;
margin-bottom: 0.5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
[role="button"] {
cursor: pointer;
}
select {
word-wrap: normal;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button:not(:disabled),
[type="button"]:not(:disabled),
[type="reset"]:not(:disabled),
[type="submit"]:not(:disabled) {
cursor: pointer;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
cursor: pointer;
}
template {
display: none;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

File diff suppressed because one or more lines are too long

@ -0,0 +1,8 @@
/*!
* Bootstrap Reboot v4.5.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save