在Matplotlib中为直角坐标图添加极坐标轴

3 投票
1 回答
2836 浏览
提问于 2025-04-16 20:42

我在Matplotlib中绘制了一个极坐标的轮廓图,具体方法可以参考这个问题。简单来说,就是把极坐标转换成直角坐标,然后在直角坐标系中绘图。

不过,我想在这个图上叠加一组极坐标系的坐标轴,也就是说,要有从中心向外延伸的径向坐标轴,分别在0度、90度、180度和270度的位置,并且在这些轴上标出不同点的半径。

我完全不知道该怎么做,也在文档中找不到相关的信息。有没有什么建议呢?

1 个回答

2
fig   = plt.figure(0)
rect  = [0.1,0.1,0.8,0.8]
theta = np.linspace(0,2*np.pi,12)
line  = np.random.rand(5)
r     = np.linspace(1,1,12)

ax_carthesian = fig.add_axes(rect, ylim=(6.5,10.5), xlim=(-2,2), aspect='equal')
ax_carthesian.set_xlabel('X [kpc]')
ax_carthesian.set_ylabel('Y [kpc]')
# the polar axis:
ax_polar = fig.add_axes(rect, polar=True, frameon=False, xticks=([]), yticks=([]))
ax_polar.set_xticklabels(['','l=135','','l=225','','l=315','','l=45'])
ax_polar.set_yticklabels([]) #no radial ticks
# plotting on the carthesian axis
im = ax_carthesian.scatter(x_stuff, y_stuff, cmap='magma')
ax_polar.grid(True)
bothaxes = [ax_carthesian, ax_polar]
cbar     = plt.colorbar(im, ax = bothaxes)
cbar.ax.set_ylabel('Log I_CO [K]')

这是包含我X和Y数据的结果图。

撰写回答