Skip to main content

🏀 basket-viz

A Python library for creating interactive and customizable visualizations of basketball statistics.

PyPI Version Python Version License Issues Last Commit Downloads

♻️ Install from PyPI

To install basket-viz, simply run:

pip install basket-viz

⛹️‍♂️Getting Started

🔍 Docs

For a comprehensive overview of features check out the documentation.

🎯 Shot Charts

from basket_viz.court.shot_charts import ShotChart

shot_chart = ShotChart()
shot_chart.plot_shot_chart(df, player_name="NEDOVIC, NEMANJA")

Alt Text

⬡ ⬢ Aggergated Shot Charts

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,
)

Alt Text

🔊 Radar Charts

The radar charts are the first kind that has layers. First layer being the chart, second being the image layer.

Standard Radar

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.

Alt Text

Comparison Radar

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.

Alt Text

🎢 Overlay

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")

Alt Text

🔴🟡🟢 Stat Grid

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)

Alt Text

📈 Relationships

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,
)

Alt Text

🙌 Contibuting

We are continuously working on improving this project and we welcome your contributions!

🐞 Open Issues

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.

👨‍💻 Pick up Issues

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!

Metadata

Release files for basket-viz 0.2.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for basket-viz 0.2.9
File Size Uploaded
basket_viz-0.2.9.tar.gz 36.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for basket-viz 0.2.9
File Interpreter ABI Platform
basket_viz-0.2.9-py3-none-any.whl Python 3 none any Details

Total release size: 75.8 kB

Release files / basket_viz-0.2.9.tar.gz

Download URL basket_viz-0.2.9.tar.gz
Size 36.0 kB
Tags Source
SHA-256 checksum
How to use checksums
7cec600552fd94eeb68f5750f27dda79f9e19f9a2b1a9bd4577e85f2f297f0ab
BLAKE2b-256 checksum
How to use checksums
25541ee030d14709ddc1f020194c1e06772288159f90340e1811b4b7d3f37e70
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.7

Release files / basket_viz-0.2.9-py3-none-any.whl

Download URL basket_viz-0.2.9-py3-none-any.whl
Size 39.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a27d343a321bf7afd5eabd056340cd1f15589046c12d26e68688d87e4c0ab552
BLAKE2b-256 checksum
How to use checksums
bd64df19d742ac24a84063e6d2480f82c9f83c8c8954bde92faeb2dbce248a49
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.7

Release history Release notifications | RSS feed

This release

0.2.9 This release

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page