diff --git a/CS 480x final project Process Book.pdf b/CS 480x final project Process Book.pdf new file mode 100644 index 0000000..3a7baf6 Binary files /dev/null and b/CS 480x final project Process Book.pdf differ diff --git a/README.md b/README.md index 69875d8..1b016da 100644 --- a/README.md +++ b/README.md @@ -1,123 +1,16 @@ Final Project - Interactive Data Visualization === -The key learning experience of this course is the final project. -You will design a web site and interactive visualizations that answer questions you have, provide an exploratory interface to some topic of your own choosing, or take on a more ambitious experiment than A3. -You will acquire the data, design your visualizations, implement them, and critically evaluate the results. +The following is the link to our visualization which is hosted using git gh-pages: https://juniorjedi490.github.io/final/. -The path to a good visualization is going to involve mistakes and wrong turns. -It is therefore important to recognize that mistakes are valuable in finding the path to a solution, to broadly explore the design space, and to iterate designs to improve possible solutions. -To help you explore the design space, we will hold events such as feedback sessions in which you propose your idea and initial designs and receive feedback from the class and staff. +The video for our presentation is in our Git repository in the videos folder (csfinal-Large 540p.mov). It is also available on YouTube at this link: https://youtu.be/RBVVKYBsrto. -Proposals / Idea Generation ---- +Our data is available in our Git repository. ssv_data.csv is the original data we collected, and data.json is this data in json format. -Submit project ideas using [this Google Form](https://docs.google.com/forms/d/e/1FAIpQLSepaCzjEq9AXwmJ8mJ-06ytkQUuLI1Z2QF5KGyhVnKaxBI-mA/viewform?usp=sf_link). +Our code is index.html, script.js, style.js, and tojson.R. csv_data.csv, data.json, and data2.json are our data. We use data.json in script.js to create the visualization which appears in/on index.html via the link at the top of the readme. -You're encouraged to submit many ideas-- staff will help you identify the most promising ones and possible roadblocks. +In script.js we create arrays using data from data.json that are similar to the json format that the example (https://observablehq.com/@mbostock/hello-cola) that we based on visualization off of uses. A nodes and a links array. We than use d3 to create our visualization. -Please stick to 1-4 folks per team. +Our visualization features a node/link graph where each node is a species of generation 1 Pokemon. Each node is colored based on the species’ type, and if the Pokémon has two types, the second type informs the color of the node’s outline stroke color. The size of each node’s radius is scaled based on the sum of the following statistics: base HP, base Attack, base Defense, base Speed, and base Special. Each node has a link to any other node that shares one (or both) of its type(s). This leads to the nodes clustering based on shared types in the visual, making it clear how the original game’s Pokémon selection spreads across the different types. -Final Project Materials ---- -For your final project you must hand in the following items. - -### Process Book - -An important part of your project is your process book. Your process book details your steps in developing your solution, including the alternative designs you tried, and the insights you got. Develop your process book out of the project proposal. Equally important to your final results is how you got there! Your process book is the place you describe and document the space of possibilities you explored at each step of your project. It is not, however, a journal or lab notebook that describes every detail - you should think carefully about the important decisions you made and insights you gained and present your reasoning in a concise way. - -We strongly advise you to include many figures in your process book, including photos of your sketches of potential designs, screen shots from different visualization tools you explored, inspirations of visualizations you found online, etc. Several images illustrating changes in your design or focus over time will be far more informative than text describing those changes. Instead, use text to describe the rationale behind the evolution of your project. - -Your process book should include the following topics. Depending on your project type the amount of discussion you devote to each of them will vary: - -- Overview and Motivation: Provide an overview of the project goals and the motivation for it. Consider that this will be read by people who did not see your project proposal. -- Related Work: Anything that inspired you, such as a paper, a web site, visualizations we discussed in class, etc. -- Questions: What questions are you trying to answer? How did these questions evolve over the course of the project? What new questions did you consider in the course of your analysis? -- Data: Source, scraping method, cleanup, etc. -- Exploratory Data Analysis: What visualizations did you use to initially look at your data? What insights did you gain? How did these insights inform your design? -- Design Evolution: What are the different visualizations you considered? Justify the design decisions you made using the perceptual and design principles you learned in the course. Did you deviate from your proposal? -- Implementation: Describe the intent and functionality of the interactive visualizations you implemented. Provide clear and well-referenced images showing the key design and interaction elements. -- Evaluation: What did you learn about the data by using your visualizations? How did you answer your questions? How well does your visualization work, and how could you further improve it? - -As this will be your only chance to describe your project in detail make sure that your process book is a standalone document that fully describes your results and the final design. -[Here](http://dataviscourse.net/2015/assets/process_books/bansal_cao_hou.pdf) are a [few examples](http://dataviscourse.net/2015/assets/process_books/walsh_trevino_bett.pdf) of process books from a similar course final. - -Tip: Start your process book on Day 1. Make entries after each meeting, and trim / edit as needed towards the end of the project. Many folks use either slides software (like PowerPoint) or Google Docs to make this book, as both allow for flexible layouts and export to PDF. - - -### Project Website - -Create a public website for your project using GitHub pages or another web hosting service of your choice. -The web site should contain your interactive visualization, summarize the main results of the project, and tell a story. -Consider your audience (the site should be public if possible, unless you're running an experiment, etc.) and keep the level of discussion at the appropriate level. -Your process book and data should be linked from the web site as well. -Also embed your interactive visualization and your screen-cast in your website. -If you are not able to publish your work (e.g., due to confidential data) please let us know in your project proposal. - -### Project Screen-Cast - -Each team will create a two minute screen-cast with narration showing a demo of your visualization and/or some slides. - -You can use any screencast tool of your choice, such as Camtasia or Loom (new and recommended). -Please make sure that the sound quality of your video is good -- it may be worthwhile to invest in an external USB microphone-- campus IT should have some you can borrow. -Upload the video to an online video-platform such as YouTube or Vimeo and embed it into your project web page. -For our final project presentation day, we will show as many videos in class as possible, and ask teams to field questions. - -We will strictly enforce the two minute time limit for the video, so please make sure you are not running longer. -Use principles of good storytelling and presentations to get your key points across. Focus the majority of your screencast on your main contributions rather than on technical details. -What do you feel is the best part of your project? -What insights did you gain? -What is the single most important thing you would like your audience to take away? Make sure it is front and center rather than at the end. - -Outside Libraries/References ---- - -For this project you *do not* have to write everything from scratch. - -You may *reference* demo programs from books or the web, and *include* popular web libraries like Material UI, React, Svelte, etcetera. - -Please *do not* use libraries on top of d3 without consulting staff, however. -Libraries like nvd3.js look tempting, but such libraries often have poor defaults and result in poor visualizations. -There may be exceptions. -Instead, draw from the numerous existing d3 examples on the web. - -If you use outside sources please provide a References section with links at the end of your Readme. - -Resources ---- -The "[Data is Plural](https://tinyletter.com/data-is-plural/archive)" weekly letter often contains interesting datasets. - -Think of something you're interested in, go find data on it! Include data collection and processing as part of your work on this project. - -Requirements ---- - -Store the following in your GitHub repository: - -- Code - All web site files and libraries assuming they are not too big to include -- Data - Include all the data that you used in your project. If the data is too large for github store it on a cloud storage provider, such as Dropbox or Yousendit. -- Process Book- Your Process Book in PDF format. -- README - The README file must give an overview of what you are handing in: which parts are your code, which parts are libraries, and so on. The README must contain URLs to your project websites and screencast videos. The README must also explain any non-obvious features of your interface. - -GitHub Details ---- - -- Fork the repo. You now have a copy associated with your username. -- Make changes to index.html to fulfill the project requirements. -- Make sure your "main" branch matches your "gh-pages" branch. See the GitHub Guides referenced above if you need help. -- Edit the README.md with a link to your gh-pages or other external site: for example http://YourUsernameGoesHere.github.io/DataVisFinal/index.html -- To submit, make a [Pull Request](https://help.github.com/articles/using-pull-requests/) on the original repository. - -Grading ---- - -- Process Book - Are you following a design process that is well documented in your process book? -- Solution - Is your visualization effective in answering your intended questions? Was it designed following visualization principles? -- Implementation - What is the quality of your implementation? Is it appropriately polished, robust, and reliable? -- Presentation - Are your web site and screencast clear, engaging, and effective? -Your individual project score will also be influenced by your peer evaluations. - -References ---- - -- This final project is adapted from https://www.dataviscourse.net/2020/project/ +We have a legend on the right of the visualization which shows what color is associated with each type of Pokemon. diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..2f7efbe --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-minimal \ No newline at end of file diff --git a/csv_data.csv b/csv_data.csv new file mode 100644 index 0000000..5b8e3e5 --- /dev/null +++ b/csv_data.csv @@ -0,0 +1,152 @@ +#,Species,Type_A,Type_B,Base_HP,Base_Attack,Base_Defense,Base_Speed,Base_Special,Total,Sprite +1,Bulbasaur,Grass,Poison,45,49,49,45,65,253,https://www.serebii.net/pokearth/sprites/yellow/001.png +2,Ivysaur,Grass,Poison,60,62,63,60,80,325,https://www.serebii.net/pokearth/sprites/yellow/002.png +3,Venusaur,Grass,Poison,80,82,83,80,100,425,https://www.serebii.net/pokearth/sprites/yellow/003.png +4,Charmander,Fire,,39,52,43,65,50,249,https://www.serebii.net/pokearth/sprites/yellow/004.png +5,Charmeleon,Fire,,58,64,58,80,65,325,https://www.serebii.net/pokearth/sprites/yellow/005.png +6,Charizard,Fire,Flying,78,84,78,100,85,425,https://www.serebii.net/pokearth/sprites/yellow/006.png +7,Squirtle,Water,,44,48,65,43,50,250,https://www.serebii.net/pokearth/sprites/yellow/007.png +8,Wartortle,Water,,59,63,80,58,65,325,https://www.serebii.net/pokearth/sprites/yellow/008.png +9,Blastoise,Water,,79,83,100,78,85,425,https://www.serebii.net/pokearth/sprites/yellow/009.png +10,Caterpie,Bug,,45,30,35,45,20,175,https://www.serebii.net/pokearth/sprites/yellow/010.png +11,Metapod,Bug,,50,20,55,30,25,180,https://www.serebii.net/pokearth/sprites/yellow/011.png +12,Butterfree,Bug,Flying,60,45,50,70,80,305,https://www.serebii.net/pokearth/sprites/yellow/012.png +13,Weedle,Bug,Poison,40,35,30,50,20,175,https://www.serebii.net/pokearth/sprites/yellow/013.png +14,Kakuna,Bug,Poison,45,25,50,35,25,180,https://www.serebii.net/pokearth/sprites/yellow/014.png +15,Beedrill,Bug,Poison,65,80,40,75,45,305,https://www.serebii.net/pokearth/sprites/yellow/015.png +16,Pidgey,Normal,Flying,40,45,40,56,35,216,https://www.serebii.net/pokearth/sprites/yellow/016.png +17,Pidgeotto,Normal,Flying,63,60,55,71,50,299,https://www.serebii.net/pokearth/sprites/yellow/017.png +18,Pidgeotto,Normal,Flying,83,80,75,91,70,399,https://www.serebii.net/pokearth/sprites/yellow/018.png +19,Rattata,Normal,,30,56,35,72,25,218,https://www.serebii.net/pokearth/sprites/yellow/019.png +20,Raticate,Normal,,55,81,60,97,50,343,https://www.serebii.net/pokearth/sprites/yellow/020.png +21,Spearow,Normal,Flying,40,60,30,70,31,231,https://www.serebii.net/pokearth/sprites/yellow/021.png +22,Fearow,Normal,Flying,65,90,65,100,61,381,https://www.serebii.net/pokearth/sprites/yellow/022.png +23,Ekans,Poison,,35,60,44,55,40,234,https://www.serebii.net/pokearth/sprites/yellow/023.png +24,Arbok,Poison,,60,85,69,80,65,359,https://www.serebii.net/pokearth/sprites/yellow/024.png +25,Pikachu,Electric,,35,55,30,90,50,260,https://www.serebii.net/pokearth/sprites/yellow/025.png +26,Raichu,Electric,,60,90,55,100,90,395,https://www.serebii.net/pokearth/sprites/yellow/026.png +27,Sandshrew,Ground,,50,75,85,40,30,280,https://www.serebii.net/pokearth/sprites/yellow/027.png +28,Sandslash,Ground,,75,100,110,65,55,405,https://www.serebii.net/pokearth/sprites/yellow/028.png +29,Nidoran,Poison,,55,47,52,41,40,235,https://www.serebii.net/pokearth/sprites/yellow/029.png +30,Nidorina,Poison,,70,62,67,56,55,310,https://www.serebii.net/pokearth/sprites/yellow/030.png +31,Nidoqueen,Poison,Ground,90,82,87,76,75,410,https://www.serebii.net/pokearth/sprites/yellow/031.png +32,Nidoran,Poison,,46,57,40,50,40,233,https://www.serebii.net/pokearth/sprites/yellow/032.png +33,Nidorino,Poison,,61,72,57,65,55,310,https://www.serebii.net/pokearth/sprites/yellow/033.png +34,Nidoking,Poison,Ground,81,92,77,85,75,410,https://www.serebii.net/pokearth/sprites/yellow/034.png +35,Clefairy,Fairy,,70,45,48,35,60,258,https://www.serebii.net/pokearth/sprites/yellow/035.png +36,Clefable,Fairy,,95,70,73,60,85,383,https://www.serebii.net/pokearth/sprites/yellow/036.png +37,Vulpix,Fire,,38,41,40,65,65,249,https://www.serebii.net/pokearth/sprites/yellow/037.png +38,Ninetales,Fire,,73,76,75,100,100,424,https://www.serebii.net/pokearth/sprites/yellow/038.png +39,Jigglypuff,Normal,Fairy,115,45,20,20,25,225,https://www.serebii.net/pokearth/sprites/yellow/039.png +40,Wigglytuff,Normal,Fairy,140,70,45,45,50,350,https://www.serebii.net/pokearth/sprites/yellow/040.png +41,Zubat,Poison,Flying,40,45,35,55,40,215,https://www.serebii.net/pokearth/sprites/yellow/041.png +42,Golbat,Poison,Flying,75,80,70,90,75,390,https://www.serebii.net/pokearth/sprites/yellow/042.png +43,Oddish,Grass,Poison,45,50,55,30,75,255,https://www.serebii.net/pokearth/sprites/yellow/043.png +44,Gloom,Grass,Poison,60,65,60,40,85,320,https://www.serebii.net/pokearth/sprites/yellow/044.png +45,Vileplume,Grass,Poison,75,80,85,50,100,390,https://www.serebii.net/pokearth/sprites/yellow/045.png +46,Paras,Bug,Grass,35,70,55,25,55,240,https://www.serebii.net/pokearth/sprites/yellow/046.png +47,Parasect,Bug,Grass,60,95,80,30,80,345,https://www.serebii.net/pokearth/sprites/yellow/047.png +48,Venonat,Bug,Poison,60,55,50,45,40,250,https://www.serebii.net/pokearth/sprites/yellow/048.png +49,Venomoth,Bug,Poison,70,65,60,90,90,375,https://www.serebii.net/pokearth/sprites/yellow/049.png +50,Diglett,Ground,,10,55,25,95,45,230,https://www.serebii.net/pokearth/sprites/yellow/050.png +51,Dugtrio,Ground,,35,80,50,120,70,355,https://www.serebii.net/pokearth/sprites/yellow/051.png +52,Meowth,Normal,,40,45,35,90,40,250,https://www.serebii.net/pokearth/sprites/yellow/052.png +53,Persian,Normal,,65,70,60,115,65,375,https://www.serebii.net/pokearth/sprites/yellow/053.png +54,Psyduck,Water,,50,52,48,55,50,255,https://www.serebii.net/pokearth/sprites/yellow/054.png +55,Golduck,Water,,80,82,78,85,80,405,https://www.serebii.net/pokearth/sprites/yellow/055.png +56,Mankey,Fighting,,40,80,35,70,35,260,https://www.serebii.net/pokearth/sprites/yellow/056.png +57,Primeape,Fighting,,65,105,60,95,60,385,https://www.serebii.net/pokearth/sprites/yellow/057.png +58,Growlithe,Fire,,55,70,45,60,50,280,https://www.serebii.net/pokearth/sprites/yellow/058.png +59,Arcanine,Fire,,90,110,80,95,80,455,https://www.serebii.net/pokearth/sprites/yellow/059.png +60,Poliwag,Water,,40,50,40,90,40,260,https://www.serebii.net/pokearth/sprites/yellow/060.png +61,Poliwhirl,Water,,65,65,65,90,50,335,https://www.serebii.net/pokearth/sprites/yellow/061.png +62,Poliwrath,Water,Fighting,90,85,95,70,70,410,https://www.serebii.net/pokearth/sprites/yellow/062.png +63,Abra,Psychic,,25,20,15,90,105,255,https://www.serebii.net/pokearth/sprites/yellow/063.png +64,Kadabra,Psychic,,40,35,30,105,120,330,https://www.serebii.net/pokearth/sprites/yellow/064.png +65,Alakazam,Psychic,,55,50,45,120,135,405,https://www.serebii.net/pokearth/sprites/yellow/065.png +66,Machop,Fighting,,70,80,50,35,35,270,https://www.serebii.net/pokearth/sprites/yellow/066.png +67,Machoke,Fighting,,80,100,70,45,50,345,https://www.serebii.net/pokearth/sprites/yellow/067.png +68,Machamp,Fighting,,90,130,80,55,65,420,https://www.serebii.net/pokearth/sprites/yellow/068.png +69,Bellsprout,Grass,Poison,50,75,35,40,70,270,https://www.serebii.net/pokearth/sprites/yellow/069.png +70,Weepinbell,Grass,Poison,65,90,50,55,85,345,https://www.serebii.net/pokearth/sprites/yellow/070.png +71,Victreebel,Grass,Poison,80,105,65,70,100,420,https://www.serebii.net/pokearth/sprites/yellow/071.png +72,Tentacool,Water,Poison,40,40,35,70,100,285,https://www.serebii.net/pokearth/sprites/yellow/072.png +73,Tentacruel,Water,Poison,80,70,65,100,120,435,https://www.serebii.net/pokearth/sprites/yellow/073.png +74,Geodude,Rock,Ground,40,80,100,20,30,270,https://www.serebii.net/pokearth/sprites/yellow/074.png +75,Graveler,Rock,Ground,55,95,115,35,45,345,https://www.serebii.net/pokearth/sprites/yellow/075.png +76,Golem,Rock,Ground,80,110,130,45,55,420,https://www.serebii.net/pokearth/sprites/yellow/076.png +77,Ponyta,Fire,,50,85,55,90,65,345,https://www.serebii.net/pokearth/sprites/yellow/077.png +78,Rapidash,Fire,,65,100,70,105,80,420,https://www.serebii.net/pokearth/sprites/yellow/078.png +79,Slowpoke,Water,Psychic,90,65,65,15,40,275,https://www.serebii.net/pokearth/sprites/yellow/079.png +80,Slowbro,Water,Psychic,95,75,110,30,80,390,https://www.serebii.net/pokearth/sprites/yellow/080.png +81,Magnemite,Electric,Steel,25,35,70,45,95,270,https://www.serebii.net/pokearth/sprites/yellow/081.png +82,Magneton,Electric,Steel,50,60,95,70,120,395,https://www.serebii.net/pokearth/sprites/yellow/082.png +83,Farfetch'd,Normal,Flying,52,65,55,60,58,290,https://www.serebii.net/pokearth/sprites/yellow/083.png +84,Doduo,Normal,Flying,35,85,45,75,35,275,https://www.serebii.net/pokearth/sprites/yellow/084.png +85,Dodrio,Normal,Flying,60,110,70,100,60,400,https://www.serebii.net/pokearth/sprites/yellow/085.png +86,Seel,Water,,65,45,55,45,70,280,https://www.serebii.net/pokearth/sprites/yellow/086.png +87,Dewgong,Water,Ice,90,70,80,70,95,405,https://www.serebii.net/pokearth/sprites/yellow/087.png +88,Grimer,Poison,,80,80,50,25,40,275,https://www.serebii.net/pokearth/sprites/yellow/088.png +89,Muk,Poison,,105,105,75,50,65,400,https://www.serebii.net/pokearth/sprites/yellow/089.png +90,Shellder,Water,,30,65,100,40,45,280,https://www.serebii.net/pokearth/sprites/yellow/090.png +91,Cloyster,Water,Ice,50,95,180,70,85,480,https://www.serebii.net/pokearth/sprites/yellow/091.png +92,Gastly,Ghost,Poison,30,35,30,80,100,275,https://www.serebii.net/pokearth/sprites/yellow/092.png +93,Haunter,Ghost,Poison,45,50,45,95,115,350,https://www.serebii.net/pokearth/sprites/yellow/093.png +94,Gengar,Ghost,Poison,60,65,60,110,130,425,https://www.serebii.net/pokearth/sprites/yellow/094.png +95,Onix,Rock,Ground,35,45,160,70,30,340,https://www.serebii.net/pokearth/sprites/yellow/095.png +96,Drowzee,Psychic,,60,48,45,42,90,285,https://www.serebii.net/pokearth/sprites/yellow/096.png +97,Hypno,Psychic,,85,73,70,67,115,410,https://www.serebii.net/pokearth/sprites/yellow/097.png +98,Krabby,Water,,30,105,90,50,25,300,https://www.serebii.net/pokearth/sprites/yellow/098.png +99,Kingler,Water,,55,130,115,75,50,425,https://www.serebii.net/pokearth/sprites/yellow/099.png +100,Voltorb,Electric,,40,30,50,100,55,275,https://www.serebii.net/pokearth/sprites/yellow/100.png +101,Electrode,Electric,,60,50,70,140,80,400,https://www.serebii.net/pokearth/sprites/yellow/101.png +102,Exeggcute,Grass,Psychic,60,40,80,40,60,280,https://www.serebii.net/pokearth/sprites/yellow/102.png +103,Exeggutor,Grass,Psychic,95,95,85,55,125,455,https://www.serebii.net/pokearth/sprites/yellow/103.png +104,Cubone,Ground,,50,50,95,35,40,270,https://www.serebii.net/pokearth/sprites/yellow/104.png +105,Marowak,Ground,,60,80,110,45,50,345,https://www.serebii.net/pokearth/sprites/yellow/105.png +106,Hitmonlee,Fighting,,50,120,53,87,35,345,https://www.serebii.net/pokearth/sprites/yellow/106.png +107,Hitmonchan,Fighting,,50,105,79,76,35,345,https://www.serebii.net/pokearth/sprites/yellow/107.png +108,Lickitung,Normal,,90,55,75,30,60,310,https://www.serebii.net/pokearth/sprites/yellow/108.png +109,Koffing,Poison,,40,65,95,35,60,295,https://www.serebii.net/pokearth/sprites/yellow/109.png +110,Weezing,Poison,,65,90,120,60,85,420,https://www.serebii.net/pokearth/sprites/yellow/110.png +111,Rhyhorn,Ground,Rock,80,85,95,25,30,315,https://www.serebii.net/pokearth/sprites/yellow/111.png +112,Rhydon,Ground,Rock,105,130,120,40,45,440,https://www.serebii.net/pokearth/sprites/yellow/112.png +113,Chansey,Normal,,250,5,5,50,105,415,https://www.serebii.net/pokearth/sprites/yellow/113.png +114,Tangela,Grass,,65,55,115,60,100,395,https://www.serebii.net/pokearth/sprites/yellow/114.png +115,Kangaskhan,Normal,,105,95,80,90,40,410,https://www.serebii.net/pokearth/sprites/yellow/115.png +116,Horsea,Water,,30,40,70,60,70,270,https://www.serebii.net/pokearth/sprites/yellow/116.png +117,Seadra,Water,,55,65,95,85,95,395,https://www.serebii.net/pokearth/sprites/yellow/117.png +118,Goldeen,Water,,45,67,60,63,50,285,https://www.serebii.net/pokearth/sprites/yellow/118.png +119," Seaking",Water,,80,92,65,68,80,385,https://www.serebii.net/pokearth/sprites/yellow/119.png +120,Staryu,Water,,30,45,55,85,70,285,https://www.serebii.net/pokearth/sprites/yellow/120.png +121,Starmie,Water,Psychic,60,75,85,115,100,435,https://www.serebii.net/pokearth/sprites/yellow/121.png +122,Mr. Mime,Psychic,Fairy,40,45,65,90,100,340,https://www.serebii.net/pokearth/sprites/yellow/122.png +123,Scyther,Bug,Flying,70,110,80,105,55,420,https://www.serebii.net/pokearth/sprites/yellow/123.png +124,Jynx,Ice,Psychic,65,50,35,95,95,340,https://www.serebii.net/pokearth/sprites/yellow/124.png +125,Electabuzz,Electric,,65,83,57,105,85,395,https://www.serebii.net/pokearth/sprites/yellow/125.png +126,Magmar,Fire,,65,95,57,93,85,395,https://www.serebii.net/pokearth/sprites/yellow/126.png +127,Pinsir,Bug,,65,125,100,85,55,430,https://www.serebii.net/pokearth/sprites/yellow/127.png +128,Tauros,Normal,,75,100,95,110,70,450,https://www.serebii.net/pokearth/sprites/yellow/128.png +129,Magikarp,Water,,20,10,55,80,20,185,https://www.serebii.net/pokearth/sprites/yellow/129.png +130,Gyarados,Water,Flying,95,125,79,81,100,480,https://www.serebii.net/pokearth/sprites/yellow/130.png +131,Lapras,Water,Ice,130,85,80,60,95,450,https://www.serebii.net/pokearth/sprites/yellow/131.png +132,Ditto,Normal,,48,48,48,48,48,240,https://www.serebii.net/pokearth/sprites/yellow/132.png +133,Eevee,Normal,,55,55,50,55,65,280,https://www.serebii.net/pokearth/sprites/yellow/133.png +134,Vaporeon,Water,,130,65,60,65,110,430,https://www.serebii.net/pokearth/sprites/yellow/134.png +135,Jolteon,Electric,,65,65,60,130,110,430,https://www.serebii.net/pokearth/sprites/yellow/135.png +136,Flareon,Fire,,65,130,60,65,110,430,https://www.serebii.net/pokearth/sprites/yellow/136.png +137,Porygon,Normal,,65,60,70,40,75,310,https://www.serebii.net/pokearth/sprites/yellow/137.png +138,Omanyte,Rock,Water,35,40,100,35,90,300,https://www.serebii.net/pokearth/sprites/yellow/138.png +139,Omastar,Rock,Water,70,60,125,55,115,425,https://www.serebii.net/pokearth/sprites/yellow/139.png +140,Kabuto,Rock,Water,30,80,90,55,45,300,https://www.serebii.net/pokearth/sprites/yellow/140.png +141,Kabutops,Rock,Water,60,115,105,80,70,430,https://www.serebii.net/pokearth/sprites/yellow/141.png +142,Aerodactyl,Rock,Flying,80,105,65,130,60,440,https://www.serebii.net/pokearth/sprites/yellow/142.png +143,Snorlax,Normal,,160,110,65,30,65,430,https://www.serebii.net/pokearth/sprites/yellow/143.png +144,Articuno,Ice,Flying,90,85,100,85,125,485,https://www.serebii.net/pokearth/sprites/yellow/144.png +145,Zapdos,Electric,Flying,90,90,85,100,125,490,https://www.serebii.net/pokearth/sprites/yellow/145.png +146,Moltres,Fire,Flying,90,100,90,90,125,495,https://www.serebii.net/pokearth/sprites/yellow/146.png +147,Dratini,Dragon,,41,64,45,50,50,250,https://www.serebii.net/pokearth/sprites/yellow/147.png +148,Dragonair,Dragon,,61,84,65,70,70,350,https://www.serebii.net/pokearth/sprites/yellow/148.png +149,Dragonite,Dragon,Flying,91,134,95,80,100,500,https://www.serebii.net/pokearth/sprites/yellow/149.png +150,Mewtwo,Psychic,,106,110,90,130,154,590,https://www.serebii.net/pokearth/sprites/yellow/150.png +151,Mew,Psychic,,100,100,100,100,100,500,https://www.serebii.net/pokearth/sprites/yellow/151.png diff --git a/data.json b/data.json new file mode 100644 index 0000000..a1db75b --- /dev/null +++ b/data.json @@ -0,0 +1 @@ +{"index":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151],"species":["Bulbasaur","Ivysaur","Venusaur","Charmander","Charmeleon","Charizard","Squirtle","Wartortle","Blastoise","Caterpie","Metapod","Butterfree","Weedle","Kakuna","Beedrill","Pidgey","Pidgeotto","Pidgeot","Rattata","Raticate","Spearow","Fearow","Ekans","Arbok","Pikachu","Raichu","Sandshrew","Sandslash","Nidoran(F)","Nidorina","Nidoqueen","Nidoran(M)","Nidorino","Nidoking","Clefairy","Clefable","Vulpix","Ninetales","Jigglypuff","Wigglytuff","Zubat","Golbat","Oddish","Gloom","Vileplume","Paras","Parasect","Venonat","Venomoth","Diglett","Dugtrio","Meowth","Persian","Psyduck","Golduck","Mankey","Primeape","Growlithe","Arcanine","Poliwag","Poliwhirl","Poliwrath","Abra","Kadabra","Alakazam","Machop","Machoke","Machamp","Bellsprout","Weepinbell","Victreebel","Tentacool","Tentacruel","Geodude","Graveler","Golem","Ponyta","Rapidash","Slowpoke","Slowbro","Magnemite","Magneton","Farfetch'd","Doduo","Dodrio","Seel","Dewgong","Grimer","Muk","Shellder","Cloyster","Gastly","Haunter","Gengar","Onix","Drowzee","Hypno","Krabby","Kingler","Voltorb","Electrode","Exeggcute","Exeggutor","Cubone","Marowak","Hitmonlee","Hitmonchan","Lickitung","Koffing","Weezing","Rhyhorn","Rhydon","Chansey","Tangela","Kangaskhan","Horsea","Seadra","Goldeen","\tSeaking","Staryu","Starmie","Mr. Mime","Scyther","Jynx","Electabuzz","Magmar","Pinsir","Tauros","Magikarp","Gyarados","Lapras","Ditto","Eevee","Vaporeon","Jolteon","Flareon","Porygon","Omanyte","Omastar","Kabuto","Kabutops","Aerodactyl","Snorlax","Articuno","Zapdos","Moltres","Dratini","Dragonair","Dragonite","Mewtwo","Mew"],"typeA":["Grass","Grass","Grass","Fire","Fire","Fire","Water","Water","Water","Bug","Bug","Bug","Bug","Bug","Bug","Normal","Normal","Normal","Normal","Normal","Normal","Normal","Poison","Poison","Electric","Electric","Ground","Ground","Poison","Poison","Poison","Poison","Poison","Poison","Fairy","Fairy","Fire","Fire","Normal","Normal","Poison","Poison","Grass","Grass","Grass","Bug","Bug","Bug","Bug","Ground","Ground","Normal","Normal","Water","Water","Fighting","Fighting","Fire","Fire","Water","Water","Water","Psychic","Psychic","Psychic","Fighting","Fighting","Fighting","Grass","Grass","Grass","Water","Water","Rock","Rock","Rock","Fire","Fire","Water","Water","Electric","Electric","Normal","Normal","Normal","Water","Water","Poison","Poison","Water","Water","Ghost","Ghost","Ghost","Rock","Psychic","Psychic","Water","Water","Electric","Electric","Grass","Grass","Ground","Ground","Fighting","Fighting","Normal","Poison","Poison","Ground","Ground","Normal","Grass","Normal","Water","Water","Water","Water","Water","Water","Psychic","Bug","Ice","Electric","Fire","Bug","Normal","Water","Water","Water","Normal","Normal","Water","Electric","Fire","Normal","Rock","Rock","Rock","Rock","Rock","Normal","Ice","Electric","Fire","Dragon","Dragon","Dragon","Psychic","Psychic"],"typeB":["Poison","Poison","Poison","","","Flying","","","","","","Flying","Poison","Poison","Poison","Flying","Flying","Flying","","","Flying","Flying","","","","","","","","","Ground","","","Ground","","","","","Fairy","Fairy","Flying","Flying","Poison","Poison","Poison","Grass","Grass","Poison","Poison","","","","","","","","","","","","","Fighting","","","","","","","Poison","Poison","Poison","Poison","Poison","Ground","Ground","Ground","","","Psychic","Psychic","Steel","Steel","Flying","Flying","Flying","","Ice","","","","Ice","Poison","Poison","Poison","Ground","","","","","","","Psychic","Psychic","","","","","","","","Rock","Rock","","","","","","","","","Psychic","Fairy","Flying","Psychic","","","","","","Flying","Ice","","","","","","","Water","Water","Water","Water","Flying","","Flying","Flying","Flying","","","Flying","",""],"baseHP":[45,60,80,39,58,78,44,59,79,45,50,60,40,45,65,40,63,83,30,55,40,65,35,60,35,60,50,75,55,70,90,46,61,81,70,95,38,73,115,140,40,75,45,60,75,35,60,60,70,10,35,40,65,50,80,40,65,55,90,40,65,90,25,40,55,70,80,90,50,65,80,40,80,40,55,80,50,65,90,95,25,50,52,35,60,65,90,80,105,30,50,30,45,60,35,60,85,30,55,40,60,60,95,50,60,50,50,90,40,65,80,105,250,65,105,30,55,45,80,30,60,40,70,65,65,65,65,75,20,95,130,48,55,130,65,65,65,35,70,30,60,80,160,90,90,90,41,61,91,106,100],"baseAttack":[49,62,82,52,64,84,48,63,83,30,20,45,35,25,80,45,60,80,56,81,60,90,60,85,55,90,75,100,47,62,82,57,72,92,45,70,41,76,45,70,45,80,50,65,80,70,95,55,65,55,80,45,70,52,82,80,105,70,110,50,65,85,20,35,50,80,100,130,75,90,105,40,70,80,95,110,85,100,65,75,35,60,65,85,110,45,70,80,105,65,95,35,50,65,45,48,73,105,130,30,50,40,95,50,80,120,105,55,65,90,85,130,5,55,95,40,65,67,92,45,75,45,110,50,83,95,125,100,10,125,85,48,55,65,65,130,60,40,60,80,115,105,110,85,90,100,64,84,134,110,100],"baseDefense":[49,63,83,43,58,78,65,80,100,35,55,50,30,50,40,40,55,75,35,60,30,65,44,69,30,55,85,110,52,67,87,40,57,77,48,73,40,75,20,45,35,70,55,60,85,55,80,50,60,25,50,35,60,48,78,35,60,45,80,40,65,95,15,30,45,50,70,80,35,50,65,35,65,100,115,130,55,70,65,110,70,95,55,45,70,55,80,50,75,100,180,30,45,60,160,45,70,90,115,50,70,80,85,95,110,53,79,75,95,120,95,120,5,115,80,70,95,60,65,55,85,65,80,35,57,57,100,95,55,79,80,48,50,60,60,60,70,100,125,90,105,65,65,100,85,90,45,65,95,90,100],"baseSpeed":[45,60,80,65,80,100,43,58,78,45,30,70,50,35,75,56,71,91,72,97,70,100,55,80,90,100,40,65,41,56,76,50,65,85,35,60,65,100,20,45,55,90,30,40,50,25,30,45,90,95,120,90,115,55,85,70,95,60,95,90,90,70,90,105,120,35,45,55,40,55,70,70,100,20,35,45,90,105,15,30,45,70,60,75,100,45,70,25,50,40,70,80,95,110,70,42,67,50,75,100,140,40,55,35,45,87,76,30,35,60,25,40,50,60,90,60,85,63,68,85,115,90,105,95,105,93,85,110,80,81,60,48,55,65,130,65,40,35,55,55,80,130,30,85,100,90,50,70,80,130,100],"baseSpecial":[65,80,100,50,65,85,50,65,85,20,25,80,20,25,45,35,50,70,25,50,31,61,40,65,50,90,30,55,40,55,75,40,55,75,60,85,65,100,25,50,40,75,75,85,100,55,80,40,90,45,70,40,65,50,80,35,60,50,80,40,50,70,105,120,135,35,50,65,70,85,100,100,120,30,45,55,65,80,40,80,95,120,58,35,60,70,95,40,65,45,85,100,115,130,30,90,115,25,50,55,80,60,125,40,50,35,35,60,60,85,30,45,105,100,40,70,95,50,80,70,100,100,55,95,85,85,55,70,20,100,95,48,65,110,110,110,75,90,115,45,70,60,65,125,125,125,50,70,100,154,100],"total":[253,325,425,249,325,425,250,325,425,175,180,305,175,180,305,216,299,399,218,343,231,381,234,359,260,395,280,405,235,310,410,233,310,410,258,383,249,424,225,350,215,390,255,320,390,240,345,250,375,230,355,250,375,255,405,260,385,280,455,260,335,410,255,330,405,270,345,420,270,345,420,285,435,270,345,420,345,420,275,390,270,395,290,275,400,280,405,275,400,280,480,275,350,425,340,285,410,300,425,275,400,280,455,270,345,345,345,310,295,420,315,440,415,395,410,270,395,285,385,285,435,340,420,340,395,395,430,450,185,480,450,240,280,430,430,430,310,300,425,300,430,440,430,485,490,495,250,350,500,590,500],"sprite":["https://www.serebii.net/pokearth/sprites/yellow/001.png","https://www.serebii.net/pokearth/sprites/yellow/002.png","https://www.serebii.net/pokearth/sprites/yellow/003.png","https://www.serebii.net/pokearth/sprites/yellow/004.png","https://www.serebii.net/pokearth/sprites/yellow/005.png","https://www.serebii.net/pokearth/sprites/yellow/006.png","https://www.serebii.net/pokearth/sprites/yellow/007.png","https://www.serebii.net/pokearth/sprites/yellow/008.png","https://www.serebii.net/pokearth/sprites/yellow/009.png","https://www.serebii.net/pokearth/sprites/yellow/010.png","https://www.serebii.net/pokearth/sprites/yellow/011.png","https://www.serebii.net/pokearth/sprites/yellow/012.png","https://www.serebii.net/pokearth/sprites/yellow/013.png","https://www.serebii.net/pokearth/sprites/yellow/014.png","https://www.serebii.net/pokearth/sprites/yellow/015.png","https://www.serebii.net/pokearth/sprites/yellow/016.png","https://www.serebii.net/pokearth/sprites/yellow/017.png","https://www.serebii.net/pokearth/sprites/yellow/018.png","https://www.serebii.net/pokearth/sprites/yellow/019.png","https://www.serebii.net/pokearth/sprites/yellow/020.png","https://www.serebii.net/pokearth/sprites/yellow/021.png","https://www.serebii.net/pokearth/sprites/yellow/022.png","https://www.serebii.net/pokearth/sprites/yellow/023.png","https://www.serebii.net/pokearth/sprites/yellow/024.png","https://www.serebii.net/pokearth/sprites/yellow/025.png","https://www.serebii.net/pokearth/sprites/yellow/026.png","https://www.serebii.net/pokearth/sprites/yellow/027.png","https://www.serebii.net/pokearth/sprites/yellow/028.png","https://www.serebii.net/pokearth/sprites/yellow/029.png","https://www.serebii.net/pokearth/sprites/yellow/030.png","https://www.serebii.net/pokearth/sprites/yellow/031.png","https://www.serebii.net/pokearth/sprites/yellow/032.png","https://www.serebii.net/pokearth/sprites/yellow/033.png","https://www.serebii.net/pokearth/sprites/yellow/034.png","https://www.serebii.net/pokearth/sprites/yellow/035.png","https://www.serebii.net/pokearth/sprites/yellow/036.png","https://www.serebii.net/pokearth/sprites/yellow/037.png","https://www.serebii.net/pokearth/sprites/yellow/038.png","https://www.serebii.net/pokearth/sprites/yellow/039.png","https://www.serebii.net/pokearth/sprites/yellow/040.png","https://www.serebii.net/pokearth/sprites/yellow/041.png","https://www.serebii.net/pokearth/sprites/yellow/042.png","https://www.serebii.net/pokearth/sprites/yellow/043.png","https://www.serebii.net/pokearth/sprites/yellow/044.png","https://www.serebii.net/pokearth/sprites/yellow/045.png","https://www.serebii.net/pokearth/sprites/yellow/046.png","https://www.serebii.net/pokearth/sprites/yellow/047.png","https://www.serebii.net/pokearth/sprites/yellow/048.png","https://www.serebii.net/pokearth/sprites/yellow/049.png","https://www.serebii.net/pokearth/sprites/yellow/050.png","https://www.serebii.net/pokearth/sprites/yellow/051.png","https://www.serebii.net/pokearth/sprites/yellow/052.png","https://www.serebii.net/pokearth/sprites/yellow/053.png","https://www.serebii.net/pokearth/sprites/yellow/054.png","https://www.serebii.net/pokearth/sprites/yellow/055.png","https://www.serebii.net/pokearth/sprites/yellow/056.png","https://www.serebii.net/pokearth/sprites/yellow/057.png","https://www.serebii.net/pokearth/sprites/yellow/058.png","https://www.serebii.net/pokearth/sprites/yellow/059.png","https://www.serebii.net/pokearth/sprites/yellow/060.png","https://www.serebii.net/pokearth/sprites/yellow/061.png","https://www.serebii.net/pokearth/sprites/yellow/062.png","https://www.serebii.net/pokearth/sprites/yellow/063.png","https://www.serebii.net/pokearth/sprites/yellow/064.png","https://www.serebii.net/pokearth/sprites/yellow/065.png","https://www.serebii.net/pokearth/sprites/yellow/066.png","https://www.serebii.net/pokearth/sprites/yellow/067.png","https://www.serebii.net/pokearth/sprites/yellow/068.png","https://www.serebii.net/pokearth/sprites/yellow/069.png","https://www.serebii.net/pokearth/sprites/yellow/070.png","https://www.serebii.net/pokearth/sprites/yellow/071.png","https://www.serebii.net/pokearth/sprites/yellow/072.png","https://www.serebii.net/pokearth/sprites/yellow/073.png","https://www.serebii.net/pokearth/sprites/yellow/074.png","https://www.serebii.net/pokearth/sprites/yellow/075.png","https://www.serebii.net/pokearth/sprites/yellow/076.png","https://www.serebii.net/pokearth/sprites/yellow/077.png","https://www.serebii.net/pokearth/sprites/yellow/078.png","https://www.serebii.net/pokearth/sprites/yellow/079.png","https://www.serebii.net/pokearth/sprites/yellow/080.png","https://www.serebii.net/pokearth/sprites/yellow/081.png","https://www.serebii.net/pokearth/sprites/yellow/082.png","https://www.serebii.net/pokearth/sprites/yellow/083.png","https://www.serebii.net/pokearth/sprites/yellow/084.png","https://www.serebii.net/pokearth/sprites/yellow/085.png","https://www.serebii.net/pokearth/sprites/yellow/086.png","https://www.serebii.net/pokearth/sprites/yellow/087.png","https://www.serebii.net/pokearth/sprites/yellow/088.png","https://www.serebii.net/pokearth/sprites/yellow/089.png","https://www.serebii.net/pokearth/sprites/yellow/090.png","https://www.serebii.net/pokearth/sprites/yellow/091.png","https://www.serebii.net/pokearth/sprites/yellow/092.png","https://www.serebii.net/pokearth/sprites/yellow/093.png","https://www.serebii.net/pokearth/sprites/yellow/094.png","https://www.serebii.net/pokearth/sprites/yellow/095.png","https://www.serebii.net/pokearth/sprites/yellow/096.png","https://www.serebii.net/pokearth/sprites/yellow/097.png","https://www.serebii.net/pokearth/sprites/yellow/098.png","https://www.serebii.net/pokearth/sprites/yellow/099.png","https://www.serebii.net/pokearth/sprites/yellow/100.png","https://www.serebii.net/pokearth/sprites/yellow/101.png","https://www.serebii.net/pokearth/sprites/yellow/102.png","https://www.serebii.net/pokearth/sprites/yellow/103.png","https://www.serebii.net/pokearth/sprites/yellow/104.png","https://www.serebii.net/pokearth/sprites/yellow/105.png","https://www.serebii.net/pokearth/sprites/yellow/106.png","https://www.serebii.net/pokearth/sprites/yellow/107.png","https://www.serebii.net/pokearth/sprites/yellow/108.png","https://www.serebii.net/pokearth/sprites/yellow/109.png","https://www.serebii.net/pokearth/sprites/yellow/110.png","https://www.serebii.net/pokearth/sprites/yellow/111.png","https://www.serebii.net/pokearth/sprites/yellow/112.png","https://www.serebii.net/pokearth/sprites/yellow/113.png","https://www.serebii.net/pokearth/sprites/yellow/114.png","https://www.serebii.net/pokearth/sprites/yellow/115.png","https://www.serebii.net/pokearth/sprites/yellow/116.png","https://www.serebii.net/pokearth/sprites/yellow/117.png","https://www.serebii.net/pokearth/sprites/yellow/118.png","https://www.serebii.net/pokearth/sprites/yellow/119.png","https://www.serebii.net/pokearth/sprites/yellow/120.png","https://www.serebii.net/pokearth/sprites/yellow/121.png","https://www.serebii.net/pokearth/sprites/yellow/122.png","https://www.serebii.net/pokearth/sprites/yellow/123.png","https://www.serebii.net/pokearth/sprites/yellow/124.png","https://www.serebii.net/pokearth/sprites/yellow/125.png","https://www.serebii.net/pokearth/sprites/yellow/126.png","https://www.serebii.net/pokearth/sprites/yellow/127.png","https://www.serebii.net/pokearth/sprites/yellow/128.png","https://www.serebii.net/pokearth/sprites/yellow/129.png","https://www.serebii.net/pokearth/sprites/yellow/130.png","https://www.serebii.net/pokearth/sprites/yellow/131.png","https://www.serebii.net/pokearth/sprites/yellow/132.png","https://www.serebii.net/pokearth/sprites/yellow/133.png","https://www.serebii.net/pokearth/sprites/yellow/134.png","https://www.serebii.net/pokearth/sprites/yellow/135.png","https://www.serebii.net/pokearth/sprites/yellow/136.png","https://www.serebii.net/pokearth/sprites/yellow/137.png","https://www.serebii.net/pokearth/sprites/yellow/138.png","https://www.serebii.net/pokearth/sprites/yellow/139.png","https://www.serebii.net/pokearth/sprites/yellow/140.png","https://www.serebii.net/pokearth/sprites/yellow/141.png","https://www.serebii.net/pokearth/sprites/yellow/142.png","https://www.serebii.net/pokearth/sprites/yellow/143.png","https://www.serebii.net/pokearth/sprites/yellow/144.png","https://www.serebii.net/pokearth/sprites/yellow/145.png","https://www.serebii.net/pokearth/sprites/yellow/146.png","https://www.serebii.net/pokearth/sprites/yellow/147.png","https://www.serebii.net/pokearth/sprites/yellow/148.png","https://www.serebii.net/pokearth/sprites/yellow/149.png","https://www.serebii.net/pokearth/sprites/yellow/150.png","https://www.serebii.net/pokearth/sprites/yellow/151.png"]} diff --git a/data2.json b/data2.json new file mode 100644 index 0000000..9056d1d --- /dev/null +++ b/data2.json @@ -0,0 +1 @@ +[{"X.":1,"Species":"Bulbasaur","Type_A":"Grass","Type_B":"Poison","Base_HP":45,"Base_Attack":49,"Base_Defense":49,"Base_Speed":45,"Base_Special":65,"Total":253,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/001.png"},{"X.":2,"Species":"Ivysaur","Type_A":"Grass","Type_B":"Poison","Base_HP":60,"Base_Attack":62,"Base_Defense":63,"Base_Speed":60,"Base_Special":80,"Total":325,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/002.png"},{"X.":3,"Species":"Venusaur","Type_A":"Grass","Type_B":"Poison","Base_HP":80,"Base_Attack":82,"Base_Defense":83,"Base_Speed":80,"Base_Special":100,"Total":425,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/003.png"},{"X.":4,"Species":"Charmander","Type_A":"Fire","Type_B":"","Base_HP":39,"Base_Attack":52,"Base_Defense":43,"Base_Speed":65,"Base_Special":50,"Total":249,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/004.png"},{"X.":5,"Species":"Charmeleon","Type_A":"Fire","Type_B":"","Base_HP":58,"Base_Attack":64,"Base_Defense":58,"Base_Speed":80,"Base_Special":65,"Total":325,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/005.png"},{"X.":6,"Species":"Charizard","Type_A":"Fire","Type_B":"Flying","Base_HP":78,"Base_Attack":84,"Base_Defense":78,"Base_Speed":100,"Base_Special":85,"Total":425,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/006.png"},{"X.":7,"Species":"Squirtle","Type_A":"Water","Type_B":"","Base_HP":44,"Base_Attack":48,"Base_Defense":65,"Base_Speed":43,"Base_Special":50,"Total":250,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/007.png"},{"X.":8,"Species":"Wartortle","Type_A":"Water","Type_B":"","Base_HP":59,"Base_Attack":63,"Base_Defense":80,"Base_Speed":58,"Base_Special":65,"Total":325,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/008.png"},{"X.":9,"Species":"Blastoise","Type_A":"Water","Type_B":"","Base_HP":79,"Base_Attack":83,"Base_Defense":100,"Base_Speed":78,"Base_Special":85,"Total":425,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/009.png"},{"X.":10,"Species":"Caterpie","Type_A":"Bug","Type_B":"","Base_HP":45,"Base_Attack":30,"Base_Defense":35,"Base_Speed":45,"Base_Special":20,"Total":175,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/010.png"},{"X.":11,"Species":"Metapod","Type_A":"Bug","Type_B":"","Base_HP":50,"Base_Attack":20,"Base_Defense":55,"Base_Speed":30,"Base_Special":25,"Total":180,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/011.png"},{"X.":12,"Species":"Butterfree","Type_A":"Bug","Type_B":"Flying","Base_HP":60,"Base_Attack":45,"Base_Defense":50,"Base_Speed":70,"Base_Special":80,"Total":305,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/012.png"},{"X.":13,"Species":"Weedle","Type_A":"Bug","Type_B":"Poison","Base_HP":40,"Base_Attack":35,"Base_Defense":30,"Base_Speed":50,"Base_Special":20,"Total":175,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/013.png"},{"X.":14,"Species":"Kakuna","Type_A":"Bug","Type_B":"Poison","Base_HP":45,"Base_Attack":25,"Base_Defense":50,"Base_Speed":35,"Base_Special":25,"Total":180,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/014.png"},{"X.":15,"Species":"Beedrill","Type_A":"Bug","Type_B":"Poison","Base_HP":65,"Base_Attack":80,"Base_Defense":40,"Base_Speed":75,"Base_Special":45,"Total":305,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/015.png"},{"X.":16,"Species":"Pidgey","Type_A":"Normal","Type_B":"Flying","Base_HP":40,"Base_Attack":45,"Base_Defense":40,"Base_Speed":56,"Base_Special":35,"Total":216,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/016.png"},{"X.":17,"Species":"Pidgeotto","Type_A":"Normal","Type_B":"Flying","Base_HP":63,"Base_Attack":60,"Base_Defense":55,"Base_Speed":71,"Base_Special":50,"Total":299,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/017.png"},{"X.":18,"Species":"Pidgeot","Type_A":"Normal","Type_B":"Flying","Base_HP":83,"Base_Attack":80,"Base_Defense":75,"Base_Speed":91,"Base_Special":70,"Total":399,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/018.png"},{"X.":19,"Species":"Rattata","Type_A":"Normal","Type_B":"","Base_HP":30,"Base_Attack":56,"Base_Defense":35,"Base_Speed":72,"Base_Special":25,"Total":218,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/019.png"},{"X.":20,"Species":"Raticate","Type_A":"Normal","Type_B":"","Base_HP":55,"Base_Attack":81,"Base_Defense":60,"Base_Speed":97,"Base_Special":50,"Total":343,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/020.png"},{"X.":21,"Species":"Spearow","Type_A":"Normal","Type_B":"Flying","Base_HP":40,"Base_Attack":60,"Base_Defense":30,"Base_Speed":70,"Base_Special":31,"Total":231,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/021.png"},{"X.":22,"Species":"Fearow","Type_A":"Normal","Type_B":"Flying","Base_HP":65,"Base_Attack":90,"Base_Defense":65,"Base_Speed":100,"Base_Special":61,"Total":381,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/022.png"},{"X.":23,"Species":"Ekans","Type_A":"Poison","Type_B":"","Base_HP":35,"Base_Attack":60,"Base_Defense":44,"Base_Speed":55,"Base_Special":40,"Total":234,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/023.png"},{"X.":24,"Species":"Arbok","Type_A":"Poison","Type_B":"","Base_HP":60,"Base_Attack":85,"Base_Defense":69,"Base_Speed":80,"Base_Special":65,"Total":359,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/024.png"},{"X.":25,"Species":"Pikachu","Type_A":"Electric","Type_B":"","Base_HP":35,"Base_Attack":55,"Base_Defense":30,"Base_Speed":90,"Base_Special":50,"Total":260,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/025.png"},{"X.":26,"Species":"Raichu","Type_A":"Electric","Type_B":"","Base_HP":60,"Base_Attack":90,"Base_Defense":55,"Base_Speed":100,"Base_Special":90,"Total":395,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/026.png"},{"X.":27,"Species":"Sandshrew","Type_A":"Ground","Type_B":"","Base_HP":50,"Base_Attack":75,"Base_Defense":85,"Base_Speed":40,"Base_Special":30,"Total":280,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/027.png"},{"X.":28,"Species":"Sandslash","Type_A":"Ground","Type_B":"","Base_HP":75,"Base_Attack":100,"Base_Defense":110,"Base_Speed":65,"Base_Special":55,"Total":405,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/028.png"},{"X.":29,"Species":"Nidoran(F)","Type_A":"Poison","Type_B":"","Base_HP":55,"Base_Attack":47,"Base_Defense":52,"Base_Speed":41,"Base_Special":40,"Total":235,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/029.png"},{"X.":30,"Species":"Nidorina","Type_A":"Poison","Type_B":"","Base_HP":70,"Base_Attack":62,"Base_Defense":67,"Base_Speed":56,"Base_Special":55,"Total":310,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/030.png"},{"X.":31,"Species":"Nidoqueen","Type_A":"Poison","Type_B":"Ground","Base_HP":90,"Base_Attack":82,"Base_Defense":87,"Base_Speed":76,"Base_Special":75,"Total":410,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/031.png"},{"X.":32,"Species":"Nidoran(M)","Type_A":"Poison","Type_B":"","Base_HP":46,"Base_Attack":57,"Base_Defense":40,"Base_Speed":50,"Base_Special":40,"Total":233,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/032.png"},{"X.":33,"Species":"Nidorino","Type_A":"Poison","Type_B":"","Base_HP":61,"Base_Attack":72,"Base_Defense":57,"Base_Speed":65,"Base_Special":55,"Total":310,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/033.png"},{"X.":34,"Species":"Nidoking","Type_A":"Poison","Type_B":"Ground","Base_HP":81,"Base_Attack":92,"Base_Defense":77,"Base_Speed":85,"Base_Special":75,"Total":410,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/034.png"},{"X.":35,"Species":"Clefairy","Type_A":"Fairy","Type_B":"","Base_HP":70,"Base_Attack":45,"Base_Defense":48,"Base_Speed":35,"Base_Special":60,"Total":258,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/035.png"},{"X.":36,"Species":"Clefable","Type_A":"Fairy","Type_B":"","Base_HP":95,"Base_Attack":70,"Base_Defense":73,"Base_Speed":60,"Base_Special":85,"Total":383,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/036.png"},{"X.":37,"Species":"Vulpix","Type_A":"Fire","Type_B":"","Base_HP":38,"Base_Attack":41,"Base_Defense":40,"Base_Speed":65,"Base_Special":65,"Total":249,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/037.png"},{"X.":38,"Species":"Ninetales","Type_A":"Fire","Type_B":"","Base_HP":73,"Base_Attack":76,"Base_Defense":75,"Base_Speed":100,"Base_Special":100,"Total":424,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/038.png"},{"X.":39,"Species":"Jigglypuff","Type_A":"Normal","Type_B":"Fairy","Base_HP":115,"Base_Attack":45,"Base_Defense":20,"Base_Speed":20,"Base_Special":25,"Total":225,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/039.png"},{"X.":40,"Species":"Wigglytuff","Type_A":"Normal","Type_B":"Fairy","Base_HP":140,"Base_Attack":70,"Base_Defense":45,"Base_Speed":45,"Base_Special":50,"Total":350,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/040.png"},{"X.":41,"Species":"Zubat","Type_A":"Poison","Type_B":"Flying","Base_HP":40,"Base_Attack":45,"Base_Defense":35,"Base_Speed":55,"Base_Special":40,"Total":215,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/041.png"},{"X.":42,"Species":"Golbat","Type_A":"Poison","Type_B":"Flying","Base_HP":75,"Base_Attack":80,"Base_Defense":70,"Base_Speed":90,"Base_Special":75,"Total":390,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/042.png"},{"X.":43,"Species":"Oddish","Type_A":"Grass","Type_B":"Poison","Base_HP":45,"Base_Attack":50,"Base_Defense":55,"Base_Speed":30,"Base_Special":75,"Total":255,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/043.png"},{"X.":44,"Species":"Gloom","Type_A":"Grass","Type_B":"Poison","Base_HP":60,"Base_Attack":65,"Base_Defense":60,"Base_Speed":40,"Base_Special":85,"Total":320,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/044.png"},{"X.":45,"Species":"Vileplume","Type_A":"Grass","Type_B":"Poison","Base_HP":75,"Base_Attack":80,"Base_Defense":85,"Base_Speed":50,"Base_Special":100,"Total":390,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/045.png"},{"X.":46,"Species":"Paras","Type_A":"Bug","Type_B":"Grass","Base_HP":35,"Base_Attack":70,"Base_Defense":55,"Base_Speed":25,"Base_Special":55,"Total":240,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/046.png"},{"X.":47,"Species":"Parasect","Type_A":"Bug","Type_B":"Grass","Base_HP":60,"Base_Attack":95,"Base_Defense":80,"Base_Speed":30,"Base_Special":80,"Total":345,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/047.png"},{"X.":48,"Species":"Venonat","Type_A":"Bug","Type_B":"Poison","Base_HP":60,"Base_Attack":55,"Base_Defense":50,"Base_Speed":45,"Base_Special":40,"Total":250,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/048.png"},{"X.":49,"Species":"Venomoth","Type_A":"Bug","Type_B":"Poison","Base_HP":70,"Base_Attack":65,"Base_Defense":60,"Base_Speed":90,"Base_Special":90,"Total":375,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/049.png"},{"X.":50,"Species":"Diglett","Type_A":"Ground","Type_B":"","Base_HP":10,"Base_Attack":55,"Base_Defense":25,"Base_Speed":95,"Base_Special":45,"Total":230,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/050.png"},{"X.":51,"Species":"Dugtrio","Type_A":"Ground","Type_B":"","Base_HP":35,"Base_Attack":80,"Base_Defense":50,"Base_Speed":120,"Base_Special":70,"Total":355,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/051.png"},{"X.":52,"Species":"Meowth","Type_A":"Normal","Type_B":"","Base_HP":40,"Base_Attack":45,"Base_Defense":35,"Base_Speed":90,"Base_Special":40,"Total":250,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/052.png"},{"X.":53,"Species":"Persian","Type_A":"Normal","Type_B":"","Base_HP":65,"Base_Attack":70,"Base_Defense":60,"Base_Speed":115,"Base_Special":65,"Total":375,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/053.png"},{"X.":54,"Species":"Psyduck","Type_A":"Water","Type_B":"","Base_HP":50,"Base_Attack":52,"Base_Defense":48,"Base_Speed":55,"Base_Special":50,"Total":255,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/054.png"},{"X.":55,"Species":"Golduck","Type_A":"Water","Type_B":"","Base_HP":80,"Base_Attack":82,"Base_Defense":78,"Base_Speed":85,"Base_Special":80,"Total":405,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/055.png"},{"X.":56,"Species":"Mankey","Type_A":"Fighting","Type_B":"","Base_HP":40,"Base_Attack":80,"Base_Defense":35,"Base_Speed":70,"Base_Special":35,"Total":260,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/056.png"},{"X.":57,"Species":"Primeape","Type_A":"Fighting","Type_B":"","Base_HP":65,"Base_Attack":105,"Base_Defense":60,"Base_Speed":95,"Base_Special":60,"Total":385,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/057.png"},{"X.":58,"Species":"Growlithe","Type_A":"Fire","Type_B":"","Base_HP":55,"Base_Attack":70,"Base_Defense":45,"Base_Speed":60,"Base_Special":50,"Total":280,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/058.png"},{"X.":59,"Species":"Arcanine","Type_A":"Fire","Type_B":"","Base_HP":90,"Base_Attack":110,"Base_Defense":80,"Base_Speed":95,"Base_Special":80,"Total":455,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/059.png"},{"X.":60,"Species":"Poliwag","Type_A":"Water","Type_B":"","Base_HP":40,"Base_Attack":50,"Base_Defense":40,"Base_Speed":90,"Base_Special":40,"Total":260,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/060.png"},{"X.":61,"Species":"Poliwhirl","Type_A":"Water","Type_B":"","Base_HP":65,"Base_Attack":65,"Base_Defense":65,"Base_Speed":90,"Base_Special":50,"Total":335,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/061.png"},{"X.":62,"Species":"Poliwrath","Type_A":"Water","Type_B":"Fighting","Base_HP":90,"Base_Attack":85,"Base_Defense":95,"Base_Speed":70,"Base_Special":70,"Total":410,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/062.png"},{"X.":63,"Species":"Abra","Type_A":"Psychic","Type_B":"","Base_HP":25,"Base_Attack":20,"Base_Defense":15,"Base_Speed":90,"Base_Special":105,"Total":255,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/063.png"},{"X.":64,"Species":"Kadabra","Type_A":"Psychic","Type_B":"","Base_HP":40,"Base_Attack":35,"Base_Defense":30,"Base_Speed":105,"Base_Special":120,"Total":330,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/064.png"},{"X.":65,"Species":"Alakazam","Type_A":"Psychic","Type_B":"","Base_HP":55,"Base_Attack":50,"Base_Defense":45,"Base_Speed":120,"Base_Special":135,"Total":405,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/065.png"},{"X.":66,"Species":"Machop","Type_A":"Fighting","Type_B":"","Base_HP":70,"Base_Attack":80,"Base_Defense":50,"Base_Speed":35,"Base_Special":35,"Total":270,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/066.png"},{"X.":67,"Species":"Machoke","Type_A":"Fighting","Type_B":"","Base_HP":80,"Base_Attack":100,"Base_Defense":70,"Base_Speed":45,"Base_Special":50,"Total":345,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/067.png"},{"X.":68,"Species":"Machamp","Type_A":"Fighting","Type_B":"","Base_HP":90,"Base_Attack":130,"Base_Defense":80,"Base_Speed":55,"Base_Special":65,"Total":420,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/068.png"},{"X.":69,"Species":"Bellsprout","Type_A":"Grass","Type_B":"Poison","Base_HP":50,"Base_Attack":75,"Base_Defense":35,"Base_Speed":40,"Base_Special":70,"Total":270,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/069.png"},{"X.":70,"Species":"Weepinbell","Type_A":"Grass","Type_B":"Poison","Base_HP":65,"Base_Attack":90,"Base_Defense":50,"Base_Speed":55,"Base_Special":85,"Total":345,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/070.png"},{"X.":71,"Species":"Victreebel","Type_A":"Grass","Type_B":"Poison","Base_HP":80,"Base_Attack":105,"Base_Defense":65,"Base_Speed":70,"Base_Special":100,"Total":420,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/071.png"},{"X.":72,"Species":"Tentacool","Type_A":"Water","Type_B":"Poison","Base_HP":40,"Base_Attack":40,"Base_Defense":35,"Base_Speed":70,"Base_Special":100,"Total":285,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/072.png"},{"X.":73,"Species":"Tentacruel","Type_A":"Water","Type_B":"Poison","Base_HP":80,"Base_Attack":70,"Base_Defense":65,"Base_Speed":100,"Base_Special":120,"Total":435,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/073.png"},{"X.":74,"Species":"Geodude","Type_A":"Rock","Type_B":"Ground","Base_HP":40,"Base_Attack":80,"Base_Defense":100,"Base_Speed":20,"Base_Special":30,"Total":270,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/074.png"},{"X.":75,"Species":"Graveler","Type_A":"Rock","Type_B":"Ground","Base_HP":55,"Base_Attack":95,"Base_Defense":115,"Base_Speed":35,"Base_Special":45,"Total":345,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/075.png"},{"X.":76,"Species":"Golem","Type_A":"Rock","Type_B":"Ground","Base_HP":80,"Base_Attack":110,"Base_Defense":130,"Base_Speed":45,"Base_Special":55,"Total":420,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/076.png"},{"X.":77,"Species":"Ponyta","Type_A":"Fire","Type_B":"","Base_HP":50,"Base_Attack":85,"Base_Defense":55,"Base_Speed":90,"Base_Special":65,"Total":345,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/077.png"},{"X.":78,"Species":"Rapidash","Type_A":"Fire","Type_B":"","Base_HP":65,"Base_Attack":100,"Base_Defense":70,"Base_Speed":105,"Base_Special":80,"Total":420,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/078.png"},{"X.":79,"Species":"Slowpoke","Type_A":"Water","Type_B":"Psychic","Base_HP":90,"Base_Attack":65,"Base_Defense":65,"Base_Speed":15,"Base_Special":40,"Total":275,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/079.png"},{"X.":80,"Species":"Slowbro","Type_A":"Water","Type_B":"Psychic","Base_HP":95,"Base_Attack":75,"Base_Defense":110,"Base_Speed":30,"Base_Special":80,"Total":390,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/080.png"},{"X.":81,"Species":"Magnemite","Type_A":"Electric","Type_B":"Steel","Base_HP":25,"Base_Attack":35,"Base_Defense":70,"Base_Speed":45,"Base_Special":95,"Total":270,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/081.png"},{"X.":82,"Species":"Magneton","Type_A":"Electric","Type_B":"Steel","Base_HP":50,"Base_Attack":60,"Base_Defense":95,"Base_Speed":70,"Base_Special":120,"Total":395,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/082.png"},{"X.":83,"Species":"Farfetch'd","Type_A":"Normal","Type_B":"Flying","Base_HP":52,"Base_Attack":65,"Base_Defense":55,"Base_Speed":60,"Base_Special":58,"Total":290,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/083.png"},{"X.":84,"Species":"Doduo","Type_A":"Normal","Type_B":"Flying","Base_HP":35,"Base_Attack":85,"Base_Defense":45,"Base_Speed":75,"Base_Special":35,"Total":275,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/084.png"},{"X.":85,"Species":"Dodrio","Type_A":"Normal","Type_B":"Flying","Base_HP":60,"Base_Attack":110,"Base_Defense":70,"Base_Speed":100,"Base_Special":60,"Total":400,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/085.png"},{"X.":86,"Species":"Seel","Type_A":"Water","Type_B":"","Base_HP":65,"Base_Attack":45,"Base_Defense":55,"Base_Speed":45,"Base_Special":70,"Total":280,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/086.png"},{"X.":87,"Species":"Dewgong","Type_A":"Water","Type_B":"Ice","Base_HP":90,"Base_Attack":70,"Base_Defense":80,"Base_Speed":70,"Base_Special":95,"Total":405,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/087.png"},{"X.":88,"Species":"Grimer","Type_A":"Poison","Type_B":"","Base_HP":80,"Base_Attack":80,"Base_Defense":50,"Base_Speed":25,"Base_Special":40,"Total":275,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/088.png"},{"X.":89,"Species":"Muk","Type_A":"Poison","Type_B":"","Base_HP":105,"Base_Attack":105,"Base_Defense":75,"Base_Speed":50,"Base_Special":65,"Total":400,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/089.png"},{"X.":90,"Species":"Shellder","Type_A":"Water","Type_B":"","Base_HP":30,"Base_Attack":65,"Base_Defense":100,"Base_Speed":40,"Base_Special":45,"Total":280,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/090.png"},{"X.":91,"Species":"Cloyster","Type_A":"Water","Type_B":"Ice","Base_HP":50,"Base_Attack":95,"Base_Defense":180,"Base_Speed":70,"Base_Special":85,"Total":480,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/091.png"},{"X.":92,"Species":"Gastly","Type_A":"Ghost","Type_B":"Poison","Base_HP":30,"Base_Attack":35,"Base_Defense":30,"Base_Speed":80,"Base_Special":100,"Total":275,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/092.png"},{"X.":93,"Species":"Haunter","Type_A":"Ghost","Type_B":"Poison","Base_HP":45,"Base_Attack":50,"Base_Defense":45,"Base_Speed":95,"Base_Special":115,"Total":350,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/093.png"},{"X.":94,"Species":"Gengar","Type_A":"Ghost","Type_B":"Poison","Base_HP":60,"Base_Attack":65,"Base_Defense":60,"Base_Speed":110,"Base_Special":130,"Total":425,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/094.png"},{"X.":95,"Species":"Onix","Type_A":"Rock","Type_B":"Ground","Base_HP":35,"Base_Attack":45,"Base_Defense":160,"Base_Speed":70,"Base_Special":30,"Total":340,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/095.png"},{"X.":96,"Species":"Drowzee","Type_A":"Psychic","Type_B":"","Base_HP":60,"Base_Attack":48,"Base_Defense":45,"Base_Speed":42,"Base_Special":90,"Total":285,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/096.png"},{"X.":97,"Species":"Hypno","Type_A":"Psychic","Type_B":"","Base_HP":85,"Base_Attack":73,"Base_Defense":70,"Base_Speed":67,"Base_Special":115,"Total":410,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/097.png"},{"X.":98,"Species":"Krabby","Type_A":"Water","Type_B":"","Base_HP":30,"Base_Attack":105,"Base_Defense":90,"Base_Speed":50,"Base_Special":25,"Total":300,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/098.png"},{"X.":99,"Species":"Kingler","Type_A":"Water","Type_B":"","Base_HP":55,"Base_Attack":130,"Base_Defense":115,"Base_Speed":75,"Base_Special":50,"Total":425,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/099.png"},{"X.":100,"Species":"Voltorb","Type_A":"Electric","Type_B":"","Base_HP":40,"Base_Attack":30,"Base_Defense":50,"Base_Speed":100,"Base_Special":55,"Total":275,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/100.png"},{"X.":101,"Species":"Electrode","Type_A":"Electric","Type_B":"","Base_HP":60,"Base_Attack":50,"Base_Defense":70,"Base_Speed":140,"Base_Special":80,"Total":400,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/101.png"},{"X.":102,"Species":"Exeggcute","Type_A":"Grass","Type_B":"Psychic","Base_HP":60,"Base_Attack":40,"Base_Defense":80,"Base_Speed":40,"Base_Special":60,"Total":280,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/102.png"},{"X.":103,"Species":"Exeggutor","Type_A":"Grass","Type_B":"Psychic","Base_HP":95,"Base_Attack":95,"Base_Defense":85,"Base_Speed":55,"Base_Special":125,"Total":455,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/103.png"},{"X.":104,"Species":"Cubone","Type_A":"Ground","Type_B":"","Base_HP":50,"Base_Attack":50,"Base_Defense":95,"Base_Speed":35,"Base_Special":40,"Total":270,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/104.png"},{"X.":105,"Species":"Marowak","Type_A":"Ground","Type_B":"","Base_HP":60,"Base_Attack":80,"Base_Defense":110,"Base_Speed":45,"Base_Special":50,"Total":345,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/105.png"},{"X.":106,"Species":"Hitmonlee","Type_A":"Fighting","Type_B":"","Base_HP":50,"Base_Attack":120,"Base_Defense":53,"Base_Speed":87,"Base_Special":35,"Total":345,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/106.png"},{"X.":107,"Species":"Hitmonchan","Type_A":"Fighting","Type_B":"","Base_HP":50,"Base_Attack":105,"Base_Defense":79,"Base_Speed":76,"Base_Special":35,"Total":345,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/107.png"},{"X.":108,"Species":"Lickitung","Type_A":"Normal","Type_B":"","Base_HP":90,"Base_Attack":55,"Base_Defense":75,"Base_Speed":30,"Base_Special":60,"Total":310,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/108.png"},{"X.":109,"Species":"Koffing","Type_A":"Poison","Type_B":"","Base_HP":40,"Base_Attack":65,"Base_Defense":95,"Base_Speed":35,"Base_Special":60,"Total":295,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/109.png"},{"X.":110,"Species":"Weezing","Type_A":"Poison","Type_B":"","Base_HP":65,"Base_Attack":90,"Base_Defense":120,"Base_Speed":60,"Base_Special":85,"Total":420,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/110.png"},{"X.":111,"Species":"Rhyhorn","Type_A":"Ground","Type_B":"Rock","Base_HP":80,"Base_Attack":85,"Base_Defense":95,"Base_Speed":25,"Base_Special":30,"Total":315,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/111.png"},{"X.":112,"Species":"Rhydon","Type_A":"Ground","Type_B":"Rock","Base_HP":105,"Base_Attack":130,"Base_Defense":120,"Base_Speed":40,"Base_Special":45,"Total":440,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/112.png"},{"X.":113,"Species":"Chansey","Type_A":"Normal","Type_B":"","Base_HP":250,"Base_Attack":5,"Base_Defense":5,"Base_Speed":50,"Base_Special":105,"Total":415,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/113.png"},{"X.":114,"Species":"Tangela","Type_A":"Grass","Type_B":"","Base_HP":65,"Base_Attack":55,"Base_Defense":115,"Base_Speed":60,"Base_Special":100,"Total":395,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/114.png"},{"X.":115,"Species":"Kangaskhan","Type_A":"Normal","Type_B":"","Base_HP":105,"Base_Attack":95,"Base_Defense":80,"Base_Speed":90,"Base_Special":40,"Total":410,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/115.png"},{"X.":116,"Species":"Horsea","Type_A":"Water","Type_B":"","Base_HP":30,"Base_Attack":40,"Base_Defense":70,"Base_Speed":60,"Base_Special":70,"Total":270,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/116.png"},{"X.":117,"Species":"Seadra","Type_A":"Water","Type_B":"","Base_HP":55,"Base_Attack":65,"Base_Defense":95,"Base_Speed":85,"Base_Special":95,"Total":395,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/117.png"},{"X.":118,"Species":"Goldeen","Type_A":"Water","Type_B":"","Base_HP":45,"Base_Attack":67,"Base_Defense":60,"Base_Speed":63,"Base_Special":50,"Total":285,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/118.png"},{"X.":119,"Species":"\tSeaking","Type_A":"Water","Type_B":"","Base_HP":80,"Base_Attack":92,"Base_Defense":65,"Base_Speed":68,"Base_Special":80,"Total":385,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/119.png"},{"X.":120,"Species":"Staryu","Type_A":"Water","Type_B":"","Base_HP":30,"Base_Attack":45,"Base_Defense":55,"Base_Speed":85,"Base_Special":70,"Total":285,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/120.png"},{"X.":121,"Species":"Starmie","Type_A":"Water","Type_B":"Psychic","Base_HP":60,"Base_Attack":75,"Base_Defense":85,"Base_Speed":115,"Base_Special":100,"Total":435,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/121.png"},{"X.":122,"Species":"Mr. Mime","Type_A":"Psychic","Type_B":"Fairy","Base_HP":40,"Base_Attack":45,"Base_Defense":65,"Base_Speed":90,"Base_Special":100,"Total":340,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/122.png"},{"X.":123,"Species":"Scyther","Type_A":"Bug","Type_B":"Flying","Base_HP":70,"Base_Attack":110,"Base_Defense":80,"Base_Speed":105,"Base_Special":55,"Total":420,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/123.png"},{"X.":124,"Species":"Jynx","Type_A":"Ice","Type_B":"Psychic","Base_HP":65,"Base_Attack":50,"Base_Defense":35,"Base_Speed":95,"Base_Special":95,"Total":340,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/124.png"},{"X.":125,"Species":"Electabuzz","Type_A":"Electric","Type_B":"","Base_HP":65,"Base_Attack":83,"Base_Defense":57,"Base_Speed":105,"Base_Special":85,"Total":395,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/125.png"},{"X.":126,"Species":"Magmar","Type_A":"Fire","Type_B":"","Base_HP":65,"Base_Attack":95,"Base_Defense":57,"Base_Speed":93,"Base_Special":85,"Total":395,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/126.png"},{"X.":127,"Species":"Pinsir","Type_A":"Bug","Type_B":"","Base_HP":65,"Base_Attack":125,"Base_Defense":100,"Base_Speed":85,"Base_Special":55,"Total":430,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/127.png"},{"X.":128,"Species":"Tauros","Type_A":"Normal","Type_B":"","Base_HP":75,"Base_Attack":100,"Base_Defense":95,"Base_Speed":110,"Base_Special":70,"Total":450,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/128.png"},{"X.":129,"Species":"Magikarp","Type_A":"Water","Type_B":"","Base_HP":20,"Base_Attack":10,"Base_Defense":55,"Base_Speed":80,"Base_Special":20,"Total":185,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/129.png"},{"X.":130,"Species":"Gyarados","Type_A":"Water","Type_B":"Flying","Base_HP":95,"Base_Attack":125,"Base_Defense":79,"Base_Speed":81,"Base_Special":100,"Total":480,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/130.png"},{"X.":131,"Species":"Lapras","Type_A":"Water","Type_B":"Ice","Base_HP":130,"Base_Attack":85,"Base_Defense":80,"Base_Speed":60,"Base_Special":95,"Total":450,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/131.png"},{"X.":132,"Species":"Ditto","Type_A":"Normal","Type_B":"","Base_HP":48,"Base_Attack":48,"Base_Defense":48,"Base_Speed":48,"Base_Special":48,"Total":240,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/132.png"},{"X.":133,"Species":"Eevee","Type_A":"Normal","Type_B":"","Base_HP":55,"Base_Attack":55,"Base_Defense":50,"Base_Speed":55,"Base_Special":65,"Total":280,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/133.png"},{"X.":134,"Species":"Vaporeon","Type_A":"Water","Type_B":"","Base_HP":130,"Base_Attack":65,"Base_Defense":60,"Base_Speed":65,"Base_Special":110,"Total":430,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/134.png"},{"X.":135,"Species":"Jolteon","Type_A":"Electric","Type_B":"","Base_HP":65,"Base_Attack":65,"Base_Defense":60,"Base_Speed":130,"Base_Special":110,"Total":430,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/135.png"},{"X.":136,"Species":"Flareon","Type_A":"Fire","Type_B":"","Base_HP":65,"Base_Attack":130,"Base_Defense":60,"Base_Speed":65,"Base_Special":110,"Total":430,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/136.png"},{"X.":137,"Species":"Porygon","Type_A":"Normal","Type_B":"","Base_HP":65,"Base_Attack":60,"Base_Defense":70,"Base_Speed":40,"Base_Special":75,"Total":310,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/137.png"},{"X.":138,"Species":"Omanyte","Type_A":"Rock","Type_B":"Water","Base_HP":35,"Base_Attack":40,"Base_Defense":100,"Base_Speed":35,"Base_Special":90,"Total":300,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/138.png"},{"X.":139,"Species":"Omastar","Type_A":"Rock","Type_B":"Water","Base_HP":70,"Base_Attack":60,"Base_Defense":125,"Base_Speed":55,"Base_Special":115,"Total":425,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/139.png"},{"X.":140,"Species":"Kabuto","Type_A":"Rock","Type_B":"Water","Base_HP":30,"Base_Attack":80,"Base_Defense":90,"Base_Speed":55,"Base_Special":45,"Total":300,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/140.png"},{"X.":141,"Species":"Kabutops","Type_A":"Rock","Type_B":"Water","Base_HP":60,"Base_Attack":115,"Base_Defense":105,"Base_Speed":80,"Base_Special":70,"Total":430,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/141.png"},{"X.":142,"Species":"Aerodactyl","Type_A":"Rock","Type_B":"Flying","Base_HP":80,"Base_Attack":105,"Base_Defense":65,"Base_Speed":130,"Base_Special":60,"Total":440,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/142.png"},{"X.":143,"Species":"Snorlax","Type_A":"Normal","Type_B":"","Base_HP":160,"Base_Attack":110,"Base_Defense":65,"Base_Speed":30,"Base_Special":65,"Total":430,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/143.png"},{"X.":144,"Species":"Articuno","Type_A":"Ice","Type_B":"Flying","Base_HP":90,"Base_Attack":85,"Base_Defense":100,"Base_Speed":85,"Base_Special":125,"Total":485,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/144.png"},{"X.":145,"Species":"Zapdos","Type_A":"Electric","Type_B":"Flying","Base_HP":90,"Base_Attack":90,"Base_Defense":85,"Base_Speed":100,"Base_Special":125,"Total":490,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/145.png"},{"X.":146,"Species":"Moltres","Type_A":"Fire","Type_B":"Flying","Base_HP":90,"Base_Attack":100,"Base_Defense":90,"Base_Speed":90,"Base_Special":125,"Total":495,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/146.png"},{"X.":147,"Species":"Dratini","Type_A":"Dragon","Type_B":"","Base_HP":41,"Base_Attack":64,"Base_Defense":45,"Base_Speed":50,"Base_Special":50,"Total":250,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/147.png"},{"X.":148,"Species":"Dragonair","Type_A":"Dragon","Type_B":"","Base_HP":61,"Base_Attack":84,"Base_Defense":65,"Base_Speed":70,"Base_Special":70,"Total":350,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/148.png"},{"X.":149,"Species":"Dragonite","Type_A":"Dragon","Type_B":"Flying","Base_HP":91,"Base_Attack":134,"Base_Defense":95,"Base_Speed":80,"Base_Special":100,"Total":500,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/149.png"},{"X.":150,"Species":"Mewtwo","Type_A":"Psychic","Type_B":"","Base_HP":106,"Base_Attack":110,"Base_Defense":90,"Base_Speed":130,"Base_Special":154,"Total":590,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/150.png"},{"X.":151,"Species":"Mew","Type_A":"Psychic","Type_B":"","Base_HP":100,"Base_Attack":100,"Base_Defense":100,"Base_Speed":100,"Base_Special":100,"Total":500,"Sprite":"https://www.serebii.net/pokearth/sprites/yellow/151.png"}] diff --git a/index.html b/index.html new file mode 100644 index 0000000..fd5643a --- /dev/null +++ b/index.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + final graph + + + + + +
+ + + + + + diff --git a/script.js b/script.js new file mode 100644 index 0000000..059432c --- /dev/null +++ b/script.js @@ -0,0 +1,273 @@ +function makeNodeLinkGraph() { + + const types = ["Grass","Fire","Water","Bug","Normal","Poison","Electric","Ground","Fairy","Fighting","Psychic","Rock","Ghost","Ice","Dragon","Flying","Steel"]; + const fills = ["#52AD18","#C72100","#0C66C1","#87950D","#B2B2B2","#6D2470","#E79302","#B18F34","#E28FE2","#682714","#DF366C","#A38A3F","#454592","#71D5F5","#6751C9","#5D73D4","#8D8D9F"]; + const outlines = ["#399400","#AE0800","#004DA8","#6E7C00","#999999","#540B57","#CE7A00","#98761B","#C976C9","#4F0E00","#C61D53","#8A7126","#2C2C79","#58BCDC","#4E38B0","#445ABB","#747486"]; + const height = 800; + const width = 1000; + + function color(type, x){ + for( i = 0 ; i < types.length ; i++ ){if(type.localeCompare(types[i])==0){if(x==0){return fills[i];} if (x==1){return outlines[i];}}} + return "#000000";} + + let r_scale = d3.scaleLinear().domain([175,590]).range([8,25]); + + const data = d3.json("data.json") + .then((response) => { + console.log(response); + var species = []; + var links2 = []; + var grass = []; + var fire = []; + var water = []; + var bug = []; + var normal = []; + var poison = []; + var electric = []; + var ground = []; + var fairy = []; + var fighting = []; + var psychic = []; + var rock = []; + var ghost = []; + var ice = []; + var dragon = []; + var flying = []; + for(let i = 0; i < response.species.length; i++){ + species.push( + {species: response.species[i], + index: response.index[i], + typeA: response.typeA[i], + typeB: response.typeB[i], + baseHP: response.baseHP[i], + baseAttack: response.baseAttack[i], + baseDefense: response.baseDefense[i], + baseSpeed: response.baseSpeed[i], + baseSpecial: response.baseSpecial[i], + total: response.total[i], + sprite: response.sprite[i] + } + ) + } + console.log("species: " + JSON.stringify(species)); + //add species to their type arrays + for(let i = 0; i < species.length; i ++){ + if((species[i].typeA === "Grass") || (species[i].typeB === "Grass")){ + grass.push(species[i].species); + } + if((species[i].typeA === "Fire") || (species[i].typeB === "Fire")){ + fire.push(species[i].species); + } + if((species[i].typeA === "Water") || (species[i].typeB === "Water")){ + water.push(species[i].species); + } + if((species[i].typeA === "Bug") || (species[i].typeB === "Bug")){ + bug.push(species[i].species); + } + if((species[i].typeA === "Normal") || (species[i].typeB === "Normal")){ + normal.push(species[i].species); + } + if((species[i].typeA === "Poison") || (species[i].typeB === "Poison")){ + poison.push(species[i].species); + } + if((species[i].typeA === "Electric") || (species[i].typeB === "Electric")){ + electric.push(species[i].species); + } + if((species[i].typeA === "Ground") || (species[i].typeB === "Ground")){ + ground.push(species[i].species); + } + if((species[i].typeA === "Fairy") || (species[i].typeB === "Fairy")){ + fairy.push(species[i].species); + } + if((species[i].typeA === "Fighting") || (species[i].typeB === "Fighting")){ + fighting.push(species[i].species); + } + if((species[i].typeA === "Psychic") || (species[i].typeB === "Psychic")){ + psychic.push(species[i].species); + } + if((species[i].typeA === "Rock") || (species[i].typeB === "Rock")){ + rock.push(species[i].species); + } + if((species[i].typeA === "Ghost") || (species[i].typeB === "Ghost")){ + ghost.push(species[i].species); + } + if((species[i].typeA === "Ice") || (species[i].typeB === "Ice")){ + ice.push(species[i].species); + } + if((species[i].typeA === "Dragon") || (species[i].typeB === "Dragon")){ + dragon.push(species[i].species); + } + if((species[i].typeA === "Flying") || (species[i].typeB === "Flying")){ + flying.push(species[i].species); + } + } + console.log("grass: " + JSON.stringify(grass)); + links2 = addLinks(grass, "grass", links2); + links2 = addLinks(fire, "fire", links2); + links2 = addLinks(water, "water", links2); + links2 = addLinks(bug, "bug", links2); + links2 = addLinks(normal, "normal", links2); + links2 = addLinks(poison, "poison", links2); + links2 = addLinks(electric, "electric", links2); + links2 = addLinks(ground, "ground", links2); + links2 = addLinks(fairy, "fairy", links2); + links2 = addLinks(fighting, "fighting", links2); + links2 = addLinks(psychic, "psychic", links2); + links2 = addLinks(rock, "rock", links2); + links2 = addLinks(ice, "ice", links2); + links2 = addLinks(ghost, "ghost", links2); + links2 = addLinks(dragon, "dragon", links2); + links2 = addLinks(flying, "flying", links2); + + console.log("links2: " + JSON.stringify(links2)); + + const nodes = species.map(d => Object.create(d)); + const index = new Map(nodes.map(d => [d.species, d])); + const links = links2.map(d => Object.assign(Object.create(d), { + source: index.get(d.source), + target: index.get(d.target) + })); + + console.log("index: \n"); + console.log(index); + console.log("nodes: \n"); + console.log(nodes); + + // const svg = d3.select(DOM.svg(width, height)); + const svg = d3.select("#graph").append("svg") + .attr("width", width) + .attr("height", height) + .append("g") + + const legend = svg.append("g") + .attr("stroke", "#fff") + .attr("stroke-width", 1.5); + + var legend_height = 500; + var legend_top_y = (height - legend_height)/2; + + legend.append("rect") + .attr("stroke","black") + .attr("fill", "none") + .attr("x",(width-100)) + .attr("y",legend_top_y) + .attr("width",100) + .attr("height",legend_height); + + legend + .selectAll("circle") + .data(types) + .enter().append("circle") + .attr("r", 5) + .attr("fill", d => color(d, 0)) + .attr("stroke", d => color(d, 1)) + .attr("cx", (width-90)) + .attr("cy", (d,i) => (legend_top_y + (i+1) * legend_height/18)); + + legend + .selectAll("text") + .data(types) + .enter().append("text") + .attr("x", (width-75)) + .attr("y", (d,i) => (legend_top_y + (i+1) * legend_height/18 + 5)) + .attr("class", "legend") + .text(d => d); + + const layout = cola.d3adaptor(d3) + .convergenceThreshold(0.001) + .avoidOverlaps(true) + .size([width, height]) + .nodes(nodes) + .links(links) + .jaccardLinkLengths(55, 0.7) + .symmetricDiffLinkLengths(15) + .start(30,30,30); + + const link = svg.append("g") + .attr("stroke", "#626262") + .attr("stroke-opacity", 0.5) + .selectAll("line") + .data(links) + .enter().append("line") + .attr("stroke-width", d => Math.sqrt(d.value)); + + const node = svg.append("g") + .selectAll("circle") + .data(nodes) + .enter().append("circle") + .attr("r", d => r_scale(d.total)) + .attr("fill", d => color(d.typeA, 0)) + .attr("stroke", function(d){if(d.typeB){return color(d.typeB, 1);} else{return color(d.typeA, 1);}}) + .attr("stroke-width", 4) + .call(layout.drag) + .each(function (d){ + var b = this.getBBox(); + d.width = b.width; + d.height = b.height;}); + + node.append("title") + .html(d => { + if (d.typeB) { + return "
\n" + d.species + "\n" + + d.typeA + "/" + d.typeB + "\nStats:\n HP: " + d.baseHP + "\n Attack: " + d.baseAttack + + "\n Defense: " + d.baseDefense + "\n Speed: " + d.baseSpeed + + "\n Special: " + d.baseSpecial + "\n Total: " + d.total + "
"; + } else { + return "
\n" + d.species + "\n" + + d.typeA + "\nStats:\n HP: " + d.baseHP + "\n Attack: " + d.baseAttack + + "\n Defense: " + d.baseDefense + "\n Speed: " + d.baseSpeed + + "\n Special: " + d.baseSpecial + "\n Total: " + d.total + "
"; + } + }); + + + //.text(d => (d.species + ", " + d.typeA + ", " + d.typeB)); + + layout.on("tick", () => { + link + .attr("x1", function(d){ + if(d.source.x>875){return 875;} + else if(d.source.x<25){return 25;} + else{return d.source.x;}}) + .attr("y1", function(d){ + if(d.source.y>775){return 775;} + else if(d.source.y<25){return 25;} + else{return d.source.y;}}) + .attr("x2", function(d){ + if(d.target.x>875){return 875;} + else if(d.target.x<25){return 25;} + else{return d.target.x;}}) + .attr("y2", function(d){ + if(d.target.y>775){return 775;} + else if(d.target.y<25){return 25;} + else{return d.target.y;}}); + + node + .attr("cx", function(d){ + if(d.x>875){return 875;} + else if(d.x<25){return 25;} + else{return d.x;}}) + .attr("cy", function(d){ + if(d.y>775){return 775;} + else if(d.y<25){return 25;} + else{return d.y;}}); + }); + + invalidation.then(() => layout.stop()); + + return svg.node(); + }); + +} + +function addLinks(d, type, links2) { + // var newLinks = []; + for(let i = 0; i < d.length-1; i++){ + for(let j = i+1; j