Cluster and visualize relationships between anime on MyAnimeList.
MAL Map is a web application that visualizes anime relationships on MyAnimeList and AniList. Edges are extracted from the recomendations of users.
The graph is clustered with multi-level modularity clustering. Some clusters are merged to produce a simpler visualization.
The map layout is generated by a particle force simulation. At first all of the nodes are represented by a single particle. The simulation is then run for a number of iterations. Each iteration all particles are split into new particles, one for each sub-cluster. Appropriate forces are applied between particles to attract related clusters together. This process results in a visually pleasing layout. The layout process can be seen live here.
Pull requests are welcome!
MAL Map is two projects: a backend node app for collecting data and clustering, and a svelte frontend client. The frontend depends on some files in the backend and its outputs.
- Open the
/data-collectiondirectory and runnpm cito install all dependencies. - Python3 is used for clustering. Install
networkxandcdlibwithpip install -r requirements.txt. - Run
npm run resetto build and run the whole data pipeline. This will pull all data from MAL/Anilist and create various txt and json files for the frontend. Usenpm run layoutto skip the data collection step.
- Open the
/sveltedirectory and runnpm cito install all dependencies. - Run
npm run devto start a localhost server with live reloading. http://localhost:8080/#animate=true will show a live view of the layout.