An interactive Shiny app for analyzing professional League of Legends data. The app is a work in progress and currently offers insights into player statistics for a subset of LEC players.
- Introduction 🌟
- Features ⚙️
- Technical Overview (Where the Magic Happens ✨🧠)
- Getting Started 🛠️
- Usage 📝
- Roadmap 🗺️
- Contributing 🤝
- Acknowledgements🙏
Welcome to ProLeagueVizz, an interactive Shiny app designed to provide insights into professional League of Legends data. The app is dedicated to analyzing player statistics and aims to expand its features to cover team statistics and team comparisons in the future.
The world of professional League of Legends is a rapidly evolving and growing field. While it may not yet have reached the global scale of traditional competitive sports like football or basketball, it's undeniably gaining momentum and attracting an ever-increasing fan base. With this growth comes a wealth of data that is being generated by every match, every player, and every team. This data is a goldmine of information that has the potential to illuminate the intricacies of the game, the strategies employed by teams, and the exceptional skills of players.
However, despite the availability of this data online, it often presents a challenge to interpret and harness effectively. In the midst of this data explosion, we find ourselves faced with a critical need: the ability to compare players and teams, assess a player's performance based on specific statistics, and gain deeper insights into the game itself. Moreover, in this relatively new and evolving field, many of the metrics we encounter are ripe for exploration and innovation, offering the potential for groundbreaking discoveries.
The goal of ProLeagueVizz is to bridge this gap between raw data and meaningful insights. We've created this app to present the existing data in a visual, intuitive manner that simplifies comparisons, facilitates player and team analysis, and helps users gain a deeper understanding of the game. As we move forward, our vision extends beyond visualization; we're excited to explore and introduce advanced metrics that can unlock new dimensions of analysis and offer fresh perspectives on players, teams, and the game of League of Legends itself.
In a rapidly evolving field where the potential for insights is vast and uncharted, ProLeagueVizz strives to be a valuable resource for both casual fans and serious analysts. We invite you to join us on this journey of discovery as we uncover the hidden stories within the data and contribute to the evolving narrative of professional League of Legends.
In the Player Statistics section of ProLeagueVizz, you'll find a comprehensive collection of the most important statistics regarding a player's performance. The section allows you to navigate seamlessly between different tournaments from various years in which the player participated. Notably, you can gain insights into how the player's performance compares to others within the same event or tournament.
The section begins by presenting key player information, including their name, team, trajectory, and tournament results. This provides a solid foundation for understanding the player's context within the League of Legends competitive landscape.
Delve into the player's early game performance metrics. This includes crucial details such as their first blood statistics (both given and received), CS (Creep Score) difference, and more. The early game insights can be viewed in comparison to all players of the tournament or exclusively within the player's specific role or position.
The Aggression subsection offers a deeper understanding of the player's aggression level. This aspect is pivotal in comprehending how much the player contributes to their team's damage, kills, assists, and overall impact. Furthermore, the analysis provides the player's KDA (Kill/Death/Assist ratio) and solo kills, offering valuable insights into their gameplay style. As with previous sections, these metrics can be examined in the context of all tournament players or exclusively within the player's role.
Efficiency is a critical aspect of a player's performance. The Efficiency section provides key information on whether the player is able to achieve high performance while efficiently using resources. A player who can excel with minimal resources showcases adaptability and skill. This metric goes beyond the traditional performance indicators and provides a more holistic view of a player's capabilities.
The Champion Pool subsection is dedicated to exploring the champions a player is proficient in. It offers insights into each champion's KDA, win rate, and more. The section also features a unique similarity graph, visually representing the relationship between the champions the player has used. This graph aids in identifying the player's playstyle, revealing patterns and potential preferences. The similarity graph is built on a content-based recommender system, and our goal is to continually enhance and refine this feature to provide even more accurate insights.
The Player Statistics section of ProLeagueVizz empowers you to uncover hidden patterns, gain valuable insights, and better understand the performance of professional League of Legends players. It's not just about raw data; it's about deriving meaningful and actionable information that enhances your appreciation of the game.
The Team Statistics section of ProLeagueVizz is an upcoming feature that aims to provide a comprehensive analysis of professional League of Legends teams. Although this section is currently under development, our vision is to offer a wealth of information about various pro teams, including player statistics, team synergy, and playstyle tendencies.
Gain insights into different professional teams, their key players, and their achievements. Dive into team-specific details and learn about their performance in various tournaments and events.
Explore detailed statistics for individual players within a team and examine how they contribute to the team's overall performance. Understand the synergy between players based on their champion pools and performance metrics.
Discover each team's unique playstyle tendencies, such as their approach to objectives like the first drake and Baron, as well as their preferred areas of action on the map. While certain data might not be readily available for free, our goal is to leverage fight tendencies of each player in soloQ to generate insightful information regarding team tendencies.
The Team Comparison section is a future addition to ProLeagueVizz that will enable users to compare different professional League of Legends teams. This powerful feature will allow you to gain a deeper understanding of how teams stack up against each other.
Effortlessly compare the statistics, player performance, and playstyle tendencies of two different teams. Identify strengths, weaknesses, and areas of differentiation that set each team apart.
Understand the nuances of each team's playstyle, including their strategic preferences, objective priorities, and map control. By comparing playstyles, you can gain insights into the strategic depth and decision-making of the teams.
As we continue to develop ProLeagueVizz, the Team Statistics and Team Comparison sections will add new layers of insight and analysis to your understanding of professional League of Legends. Stay tuned for updates as we work to bring these features to life.
One of the fundamental pillars of the ProLeagueVizz project was the collection and aggregation of data that forms the foundation for our insights and visualizations. The data scraping process was a crucial step in obtaining the necessary information to showcase players' performance and trajectories. To do so we made use of the Selenium scrapping tool.
We began by gathering essential player information. This encompassed details such as player names, affiliated teams, tournament trajectories, and results. Additionally, we collected player photos to provide a personal touch to our web app and also offer insights into their competitive journey. The collected data underwent a rigorous cleaning process to ensure consistency and relevance. We tackled challenges like datetime formatting and symbol removal to transform raw data into clean and functional data.
To achieve this, we utilized Python notebooks dedicated to data scraping and cleaning. The code responsible for extracting player images, tournament details, and basic player data can be found in the files scrapImages.ipynb, tournament_scrapping.ipynb, and PlayerStats_scrapping.ipynb.
The next step wasa scraping tournament-specific technical data. This data was organized on a tournament and year basis, allowing users of the app to explore player performance with greater flexibility. By doing so, we gave users the ability to observe the evolution of players' gameplay, make year-to-year comparisons, and investigate their strengths and weaknesses.
The data collection process involved accessing multiple sources, including platforms like gol.gg and OraclesElixir. Each source provided unique player stats and data that, when combined, gave a comprehensive and deep view of players' competitive achievements. Data formatting and standardization were critical steps in this process. We addressed issues like symbol removal, value range adjustment, and handling missing data to ensure accurate and coherent analyses within our R app.
The code responsible for scraping player statistics and formatting data from various websites is contained in files such as InitialTest_scrapping.ipynb, PlayerStats_scrapping.ipynb, and golData_indivStats.ipynb.
One notable challenge we faced was the inconsistency in tournament names across different websites. For instance, one source might list an event as "Worlds 2020," while another could refer to it as "World Championship 2020." Similar variations occurred for other events, such as "MSI 2019" and "Mid-Season Invitational 2019." To address this issue, we made use of the FuzzyWuzzy library in Python. This library enabled us to intelligently match strings and establish correspondences between different tournament name variations. This strategy was instrumental in efficiently reconciling disparate tournament data, ultimately saving us valuable time.
The alternative options to address this challenge would have been manual entry or laborious string modification. However, the string matching library FuzzyWuzzy provided a more automated and effective solution.
The code demonstrating our string matching strategy can be found in the file dataMerge.ipynb.
The final piece of the puzzle was scraping champion pool data. We collected information on the champions that each player has historically played, both over their entire career and in specific tournaments. This data lets users to explore which champions players excelled with in particular events or throughout their careers.
This data can be found in the file playerGraphScrapping.ipynb.
During the development of ProLeagueVizz, we wanted to provide users with a tool that not only showcases player champion pools but also offers a glimpse into their playstyle and potential future champion selections. To achieve this, we made use of the power of recommender systems and translated its insights into an interactive graph using R's visNetwork library.
Our primary goal was to give users the ability to explore a player's champion pool and glean insights into their preferred playstyle and potential future champion choices. We achieved this through the concept of a recommender system. This system, often employed in various domains, helps identify similarities between items based on specific features, in this case, champion attributes and how much they are played in SoloQ.
To construct our content-based recommender system, we started by going through the data scraping process. We collected three distinct datasets: champion attributes such as their nature (e.g., brawler, assassin), in-game statistics (base damage, HP, AP, AD), and actual player usage data. The latter was extracted using the RIOT API, analyzing the champion choices of over 8,000 high Elo players. This last step was particularly insightful as we chose to analyze high Elo players, not just professional players, to achieve a more comprehensive perspective. In the quest to provide more human-like insights, we delved deeper into the data. For each champion, we examined the correlated champions that appeared as the second-most frequently played champions by players who favored the main champion. This analysis revealed fascinating correlations and player preferences that transcended statistical boundaries. For instance, consider the scenario where we analyzed champion choices for Yasuo. Surprisingly, we discovered a notable trend: a significant portion of Yasuo enthusiasts also favored Yone. This intriguing correlation sparks a fascinating realization – champions like Yasuo and Yone share a certain allure that resonates with players who enjoy high-intensity, high-mobility gameplay. By incorporating this unique methodology, we were able to infuse our recommender system with a distinct human touch. The insights gained went beyond numerical patterns and tapped into the nuanced preferences and playstyles of high Elo players.
Our data collection process resulted in a robust dataset encompassing champion characteristics and usage patterns. Leveraging this dataset, we developed a recommendation matrix that quantified the similarity between champions based on the three collected datasets. Weighting was applied to reflect the varying importance of each attribute in determining champion relationships.
The code can de found in the Data Preprocessing folder as content_based_filtering.ipynb
Visualizing the recommendations was made possible through R's visNetwork library. We translated the recommendation matrix into an interactive graph where champions are represented as nodes, and edges reflect their similarity. Users exploring a player's champion pool can now not only view statistics and win rates but also witness the interconnectedness between champions.
Intriguingly, as users explore the graph, they can identify clusters of champions with shared attributes and playstyles. Edges connecting these clusters offer insights into the potential expansion of a player's champion pool based on their existing preferences.
While our content-based recommender system provides valuable insights into champion relationships, we envision further enhancing its capabilities. Our next step involves incorporating personal data from pro players, such as their preferred playstyles and champions. By integrating these insights, we aim to create a more personalized recommendation experience using collaborative filtering approaches.
Follow these steps to install and run ProLeagueVizz on your local machine:
Before using the ProLeagueVizz app, ensure you have the following prerequisites in place:
-
R Installation: ProLeagueVizz is an R Shiny app. You need to have R installed on your system to run the app. You can either use R directly or opt for an integrated development environment (IDE) like RStudio or Visual Studio Code (VSCode) with R support.
-
Required R Packages: The following R packages are required for the proper functioning of ProLeagueVizz. You can install them using the R console or your preferred R package management method:
install.packages(c( "shiny", "shinythemes", "reshape2", "ggplot2", "lubridate", "dplyr", "readr", "plotly", "bslib", "forcats", "ggridges", "viridis", "gridExtra", "shinyjs", "DT", "visNetwork" ))
These packages provide essential functionalities for data manipulation, visualization, interactivity, and user interface design in ProLeagueVizz.
We recommend using the latest versions of R and the specified packages to ensure compatibility and access to the app's full range of features.
With these prerequisites met, you're ready to explore the insights and analyses that ProLeagueVizz has to offer.
Follow these steps to install and set up ProLeagueVizz on your local machine:
-
Clone this repository to your local machine using Git or download the ZIP file and extract it.
-
Open the
global.Rfile inside the R folder located in the project root directory. -
Locate the following line in
global.R:# Set the working directory (CHANGE PATH) setwd("C:/Users/adars/OneDrive/Escritorio/ProjecteLolShiny")
-
Replace the path in setwd with the path to the root directory of the cloned repository on your local machine. This step is crucial for ensuring that your app's paths are correctly set and resources are loaded.
-
Open
app.Rin R or your preferred R development environment (e.g., RStudio, Visual Studio Code). -
To launch the app, execute the
app.Rscript in R. This will start the app, and you will see the URL where you can access it (usually http://127.0.0.1:port).
Using ProLeagueVizz is straightforward:
-
Ensure you have followed the installation instructions and the app is running on your local machine.
-
Access the app by navigating to the URL provided when you started the app.
-
Explore the app's sections to analyze professional League of Legends data. Navigate through the "Player Statistics" section to gain insights into individual players' performance.
-
Interact with the user interface to select different players, tournaments, and statistics for analysis.
-
[IN FUTURE] Take advantage of the upcoming "Team Statistics" and "Team Comparison" sections to delve deeper into team-based analysis and comparisons.
That's it! With ProLeagueVizz, you have a powerful tool at your fingertips to explore and gain insights from professional League of Legends data. Feel free to experiment, analyze, and enjoy the app's features.
Our journey with ProLeagueVizz is just beginning, and we have exciting plans for its future development. While the app is currently in its early stages, we're committed to continually enhancing its capabilities and providing even more valuable insights to League of Legends enthusiasts and data analysts.
In the near future, we're focusing on the following enhancements:
-
Expanded Player and Team Coverage: We aim to broaden our data coverage to include a wider range of players and teams, providing a more comprehensive view of the League of Legends competitive landscape.
-
Team Statistics: The upcoming "Team Statistics" section will offer insights into team dynamics, strategies, and trends. We'll delve into aspects such as early game dominance, objective control, and map presence.
-
Enhanced User Experience: We're dedicated to refining the user interface, improving navigation, and ensuring a smooth and intuitive experience for all users.
Looking further ahead, we're planning the following developments:
-
Team Comparison: The "Team Comparison" section will allow users to directly compare teams based on various metrics, playstyles, and strategies.
-
Advanced Metrics and Insights: We'll introduce more advanced metrics that provide deeper insights into player and team performance, shedding light on key contributors to success.
-
Interactive Insights: We're exploring interactive visualizations and features that empower users to perform custom analyses and gain personalized insights.
In the long term, our vision for ProLeagueVizz includes:
-
Global Coverage: We aspire to cover major regions and leagues across the world, offering a truly comprehensive analysis of the League of Legends competitive scene.
-
Machine Learning Integration: We plan to integrate machine learning techniques to provide predictive analysis, identify emerging trends in playstyles, etc.
We welcome contributions to ProLeagueVizz, and your help can make a significant impact on the growth of this project! As we continue to refine and expand the app's capabilities, your involvement can play a crucial role in shaping its future.
Whether you're a developer, a League of Legends enthusiast, or simply excited about data analysis, there are several ways you can contribute:
-
Bug Reports: If you encounter any bugs, glitches, or unexpected behavior while using ProLeagueVizz, please let us know! Open an issue in the repository, providing detailed steps to reproduce the problem. Your feedback is invaluable in improving the app's quality.
-
Feature Requests: Have an idea for a new feature, enhancement, or improvement? Share it with us by opening an issue! We're eager to hear your suggestions and consider ways to make ProLeagueVizz even more valuable.
-
Code Contributions: If you're comfortable with R and Shiny development, you can contribute directly to the codebase. Fork this repository, make your changes, and submit a pull request. We'll review your contribution and work together to integrate it into the project.
It's important to note that ProLeagueVizz is still in its early stages of development. The current version focuses on a subset of LEC (League of Legends EMEA Championship) players, and there might be bugs or areas that need refinement. As a personal project, it's a work in progress, and your understanding and patience are greatly appreciated.
Your support and engagement can help ProLeagueVizz evolve into a powerful resource for League of Legends enthusiasts and data analysts alike. Together, we can uncover new insights, enhance functionality, and contribute to the vibrant community around professional League of Legends.
Thank you for considering contributing to ProLeagueVizz, and we look forward to collaborating with you on this exciting journey!
We extend our sincere gratitude to the following data sources, libraries, and resources that have played a significant role in the development of ProLeagueVizz:
-
Gol.gg: A valuable source of competitive League of Legends statistics and data, enabling us to gather insights into player and team performance.
-
League of Legends Fandom: A community-driven platform that offers a wealth of information on League of Legends tournaments, players, and teams.
-
RIOT API: The official API provided by Riot Games, enabling us to access essential League of Legends data and enrich our analyses.
-
R Libraries: The vibrant R community and its extensive collection of libraries have empowered us to process, visualize, and analyze data effectively within ProLeagueVizz.
-
Selenium: A powerful tool for web scraping and automation, allowing us to gather data from online sources and enhance our analysis capabilities.
We also express our appreciation to the countless League of Legends enthusiasts, developers, and contributors who have shared their insights, ideas, and knowledge, fostering a collaborative environment within the League of Legends community.
Your collective efforts have been instrumental in shaping ProLeagueVizz and contributing to its capabilities. We are grateful for your support and dedication.
Note: ProLeagueVizz is a work in progress. The current version focuses on player statistics for a subset of LEC players. Stay tuned for updates and enhancements as the project evolves.


