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-collection
directory and runnpm ci
to install all dependencies. - Python3 is used for clustering. Install
networkx
andcdlib
withpip install -r requirements.txt
. - Run
npm run reset
to 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 layout
to skip the data collection step.
- Open the
/svelte
directory and runnpm ci
to install all dependencies. - Run
npm run dev
to start a localhost server with live reloading. http://localhost:8080/#animate=true will show a live view of the layout.