A Python library for creating interactive and customizable visualizations of basketball statistics.
To install basket-viz, simply run:
pip install basket-viz
For a comprehensive overview of features check out the documentation.
from basket_viz.court.shot_charts import ShotChart
shot_chart = ShotChart()
shot_chart.plot_shot_chart(df, player_name="NEDOVIC, NEMANJA")
df_all = shot_chart.get_all_entity_hexbin_data(df)
shot_chart.plot_entity_hexbin_sized(
df_all,
offsets_col='offsets',
color_col='values_ratio',
size_col='values_all',
entity_name=player_name,
)
The radar charts are the first kind that has layers. First layer being the chart, second being the image layer.
radar_chart = RadarChart(
dataframe=df_player_stats,
columns=stats
)
radar_chart.plot_radar(player_name, title_sufix="\n Euroleague 2023/2024")
radar_chart.add_player_image(img_path)
radar_chart.display_chart()
NOTE: The circular image is not mandatory.
radar_chart = RadarChart(
dataframe=df_player_stats,
columns=stats
)
player_names = ["Howard, Markus", "James, Mike"]
colors = [basconia_blue, monaco_gold]
# Plot the radar comparison
radar_chart.compare_radars(
player_names=player_names,
line_colors=colors,
title="Euroleague 2023/2024 \n SCORRER COMPARISON"
)
# Add player images after plotting the radars
radar_chart.add_comparison_images(start_x=0.2, spacing=0.25, y_offset=-0.2)
# Display the chart
radar_chart.display_chart()
NOTE: The circular images are not mandatory.
This module supports plotting static and animated overlay comparing the performance of individuals against the rest of the league.
from basket_viz.overlay.trajectory import PlotTrajectory
pt = PlotTrajectory()
players = ["Hezonja, Mario","James, Mike","Lessort, Mathias"]
colors = [real_madrid_gold, monaco_red, panathenaicos_green]
v_lines = {1.0: 'Short-Range', 4.0: 'Mid-Range', 6.75: 'Three-Point Line'}
pt.plot_trajectory_animated(normalized_df, players, colors, v_lines=v_lines, title=f"Scoring Profiles \n EUROLEAGUE 23/24")
This module supports plotting stat heatmaps for all players per game.
It also comes with marking capability, to "zoom in" on particular players by highlighting them.
The shape of the values can be square or circle.
from basket_viz.stat_grid.season_stats import PlayerStatsHeatmap
ps = PlayerStatsHeatmap()
ps.set_params( highlight_params={
"backgroundcolor": basconia_red,
"fontweight": "bold",
"edgecolor": basconia_blue,
"lw": 3,
})
ps.plot_stat_heatmap(df_stats, team='BAS', player_bames=['moneke, chima'.upper()], num_games=15, stat=stat)
This module supports plotting relationships between different stats of players int the team.
To apply collor template that matches the brand of Euroleague
teams use use_team_config=True
.
from basket_viz.relationships.plotter import PlotRelationship
plotter = PlotRelationship(use_team_config=True,output_format='mp4')
plotter.plot_animated_relationship(
df,
team_filter="BAR",
display_only_last_names=True,
)
We are continuously working on improving this project and we welcome your contributions!
If you have any feature requests or bug reports, please don't hesitate to open an issue. This project is a work in progress, and your feedback is invaluable to us.
You can also pick up an issue at any time and start working on it. Please make sure to follow our contribution guidelines to ensure a smooth collaboration process. Thank you for your support and happy coding!