最近看了一篇文章是有关于NBA球员出手数据的可视化案例,原文链接如下。
虎扑热帖|Python数据分析|NBA的球星们喜欢在哪个位置出手
个人感觉比较有趣,所以想着自己也来实现一波。
总体上来说差不多,可能就是美观点吧...
/ 01 / 篮球场
从网上找的篮球场尺寸图,如下。
其中单位为英尺,NBA的球场尺寸为94英尺长,50英尺宽。
下图是我用CAD绘制半场尺寸图,本次绘图就是按照下面这个尺寸来的。
有了尺寸,接下来就可以使用matplotlib进行绘制篮球场了。
主要是绘制矩形、圆形以及圆弧。
具体代码如下。from matplotlib import pyplot as pltfrom matplotlib.patches import Arc, Circle, Rectangledef draw_ball_field(color="#20458C", lw=2): """ 绘制篮球场 """ # 新建一个大小为(6,6)的绘图窗口 plt.figure(figsize=(6, 6)) # 获得当前的Axes对象ax,进行绘图 ax = plt.gca() # 对篮球场进行底色填充 lines_outer_rec = Rectangle(xy=(-250, -47.5), width=500, height=470, linewidth=lw, color="#F0F0F0", fill=True) # 设置篮球场填充图层为最底层 lines_outer_rec.set_zorder(0) # 将rec添加进ax ax.add_patch(lines_outer_rec) # 绘制篮筐,半径为7.5 circle_ball = Circle(xy=(0, 0), radius=7.5, linewidth=lw, color=color, fill=False) # 将circle添加进ax ax.add_patch(circle_ball) # 绘制篮板,尺寸为(60,1) plate = Rectangle(xy=(-30, -7.5), width=60, height=-1, linewidth=lw, color=color, fill=False) # 将rec添加进ax ax.add_patch(plate) # 绘制2分区的外框线,尺寸为(160,190) outer_rec = Rectangle(xy=(-80, -47.5), width=160, height=190, linewidth=lw, color=color, fill=False) # 将rec添加进ax ax.add_patch(outer_rec) # 绘制2分区的内框线,尺寸为(120,190) inner_rec = Rectangle(xy=(-60, -47.5), width=120, height=190, linewidth=lw, color=color, fill=False) # 将rec添加进ax ax.add_patch(inner_rec) # 绘制罚球区域圆圈,半径为60 circle_punish = Circle(xy&