Python中如何将散点坐标缩放适配指定坐标轴范围?
Python实现散点缩放适配到欧篮联球场图的方案
核心库与工具
- Matplotlib:作为绘图基础,
draw_court()一般基于该库实现,同时用其scatter()函数绘制缩放后的散点。 - NumPy:批量处理坐标的缩放计算,高效完成数组级别的映射转换。
实现步骤与关键代码
确定球场坐标范围:先获取
draw_court()切换X/Y轴后的坐标轴范围(可通过plt.xlim()和plt.ylim()获取),记为court_x_range = [x_min, x_max],court_y_range = [y_min, y_max]。坐标缩放与轴适配:
因为球场图切换了X/Y轴,需要将原散点的X/Y坐标交换后,再映射到球场的坐标系统:import numpy as np import matplotlib.pyplot as plt # 原散点数据(示例) scatter_x = np.random.uniform(0, 735, 100) scatter_y = np.random.uniform(0, 437, 100) # 获取球场图的坐标轴范围 plt.figure() draw_court() # 生成切换X/Y轴的欧篮联球场图 court_x_min, court_x_max = plt.xlim() court_y_min, court_y_max = plt.ylim() plt.close() # 缩放并交换坐标轴适配球场 scaled_x = court_x_min + (scatter_y / 437) * (court_x_max - court_x_min) scaled_y = court_y_min + (scatter_x / 735) * (court_y_max - court_y_min) # 绘制最终可视化图 plt.figure() draw_court() plt.scatter(scaled_x, scaled_y, color='darkorange', s=15) plt.show()可选:适配原图表全局坐标轴
如果散点是从X[-200,1300]、Y[-800,800]的全局图表中提取的,需先将散点坐标裁剪到[0,735]和[0,437]范围内,再执行上述缩放步骤:# 裁剪散点到目标范围 scatter_x_adj = np.clip(scatter_x, 0, 735) scatter_y_adj = np.clip(scatter_y, 0, 437) # 后续缩放步骤同上
内容的提问来源于stack exchange,提问作者jah
相关产品推荐
相关产品推荐

