在Matplotlib中将极轴添加到笛卡尔图中

时间:2011-07-02 10:10:37

标签: python matplotlib plot

我在Matplotlib中绘制了一个极坐标等高线图,如this question中所述。这基本上可以通过将极坐标转换为笛卡尔坐标,然后在笛卡尔坐标系中进行绘图来实现。

然而,我希望能够在图上覆盖一组极坐标系统轴 - 即径向轴(从中心伸出)在0度,90度,180度和270度,带刻度在他们身上显示不同点的半径。

我完全不知道如何去做这件事,似乎无法在文档中找到任何东西。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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]')

This is the resultant plot with both axes (and my X and Y data).