Matplotlib极坐标图:自定义主刻度轴标签
修改Matplotlib极坐标图的方位与标签
以下是满足需求的可运行代码:
%matplotlib widget import numpy as np import random import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(projection='polar') # 旋转极坐标,让0度(Front)位于12点钟方向 ax.set_theta_offset(np.pi / 2) # 设置角度方向为顺时针(符合日常方位认知) ax.set_theta_direction(-1) # 自定义刻度标签:对应12、3、6、9点钟位置 theta_ticks = [0, np.pi/2, np.pi, 3*np.pi/2] ax.set_xticks(theta_ticks) ax.set_xticklabels(['Front', 'Right', 'Back', 'Left']) # 绘制360个随机点 for rad in np.arange(0, 2 * np.pi, 2 * np.pi / 360): ax.plot(rad, random.random()*10, marker='.', markersize=2, color='green') plt.show()
关键修改说明:
- 旋转极坐标原点:使用
ax.set_theta_offset(np.pi / 2)将默认在3点钟的0度位置逆时针旋转90度,移到12点钟方向。 - 调整角度方向:
ax.set_theta_direction(-1)把默认的逆时针角度方向改为顺时针,让3点钟对应π/2弧度(Right)、6点钟对应π弧度(Back)、9点钟对应3π/2弧度(Left),贴合日常方位逻辑。 - 替换刻度标签:通过
set_xticks指定要显示的角度位置,再用set_xticklabels把系统默认刻度替换为自定义的方位名称。 - 规范绘图方式:改用子图对象的
ax.plot替代全局的plt.polar,代码更模块化,避免全局状态干扰。
内容的提问来源于stack exchange,提问作者pitosalas
相关产品推荐
相关产品推荐

