将笛卡尔分箱数据集转换为cos(phi)-半径坐标并可视化
笛卡尔分箱坐标到目标坐标系的转换逻辑解析
你需要搞懂的是从笛卡尔分箱坐标到「以(8,8)为原点、X轴为cos(phi)、Y轴为半径」的坐标系的转换逻辑,本质是极坐标的变形应用,下面一步步拆解:
1. 明确两个坐标系的基础定义
- 原笛卡尔坐标系:分箱位置用数组的
(列索引x, 行索引y)表示(因为pcolor默认列对应X轴、行对应Y轴),数据的中心在索引(8,8)处。 - 目标坐标系:
- 原点平移到原坐标系的
(8,8) - Y轴 = 分箱到新原点的直线距离(即极坐标的半径
r) - X轴 = 分箱相对新原点的极角
phi的余弦值cos(phi)
- 原点平移到原坐标系的
2. 核心转换三步法
步骤1:平移原点,计算相对坐标
把每个分箱的原坐标(x,y)转换成以(8,8)为原点的相对偏移量:
dx = x - 8 # x是原分箱的列索引 dy = y - 8 # y是原分箱的行索引
比如原分箱(8,8)的相对坐标是(0,0),原分箱(9,8)(中心右侧第一个分箱)的相对坐标是(1,0),原分箱(8,9)(中心上方第一个分箱)的相对坐标是(0,1)。
步骤2:计算极坐标参数
从相对笛卡尔坐标(dx, dy)转换为极坐标的两个核心参数:
- 半径
r(目标Y轴):用勾股定理计算分箱到新原点的距离:r = np.sqrt(dx**2 + dy**2) - 极角
phi:是相对坐标与新原点连线和**原坐标系正X轴(向右)**的夹角,用arctan2计算(能覆盖全平面的角度,范围是-π到π):phi = np.arctan2(dy, dx)
步骤3:映射到目标X轴
目标坐标系的X轴直接取极角的余弦值:
x_target = np.cos(phi)
这个值的特性很直观:
- 分箱在中心正右方时,
phi=0,cos(phi)=1 - 分箱在中心正左方时,
phi=π,cos(phi)=-1 - 分箱在中心正上方/正下方时,
phi=±π/2,cos(phi)=0 - 左右对称的分箱(比如中心左上和右上对称位置),
cos(phi)值相同,会落在目标坐标系的同一X位置。
3. 结合你的数据集的意义
你的数据是近似圆形,用这种坐标系展示的价值在于:
- 能清晰对比不同半径(离中心的远近)上,数据在左右方向的分布规律
- 你画的红色半径6、8的圆,对应目标坐标系中Y=6、Y=8的水平线,可直接观察这两个环上的数据分布差异
- 损坏的单元格(值为None)只是不参与可视化,转换逻辑对它们同样适用,处理时直接跳过即可。
内容的提问来源于stack exchange,提问作者David K.
相关产品推荐
相关产品推荐

