在Matplotlib的极坐标图上设置xlim,ylim

时间:2015-08-04 17:51:12

标签: python matplotlib

我在matplotlib中使用极坐标中的绘图来制作一组原理图,看起来像, schematic0

在子图之间有比我想要的更多的空白区域。在极坐标中,set_xlim不起作用,并且set_ylim设置半径限制。我可以调整xlim和ylim吗?减少子图之间的空白的最佳方法是什么?

import matplotlib
import matplotlib.pyplot as plt
import numpy as np

def schematic0():
    fig = plt.figure(figsize=(3., 3.))
    a_theta = np.linspace(-8, 8, 17) * np.pi / 8.
    a = np.cos(0.5 * a_theta)
    fig.subplots_adjust(left=0., bottom=0., right=1., top=1.,
                        wspace=0., hspace=0.)
    for j in range(1, 5):
        fig.add_subplot(2, 2, j, projection='polar')
        ax = fig.gca()
        ax.bar(a_theta, a, width=np.pi/8, color='w')
        ax.spines['polar'].set_visible(False)
        ax.set_xticklabels([])
        ax.set_yticklabels([])
        ax.xaxis.grid(False)
        ax.yaxis.grid(False)
    plt.savefig('foo0.png')
    return fig

我可以通过拧紧重叠的轴来使这个看起来更像我想要的东西, schematic2

def schematic2():
    fig = plt.figure(figsize=(3., 3.))
    a_theta = np.linspace(-8, 8, 17) * np.pi / 8.
    a = np.cos(0.5 * a_theta)
    fig.subplots_adjust(left=-0.1, bottom=-0.05, right=1., top=1.05,
                        wspace=-0.1, hspace=-0.1)
    for j in range(1, 5):
        fig.add_subplot(2, 2, j, projection='polar',
                        axis_bgcolor=(1., 1., 1., 0.))
        ax = fig.gca()
        ax.bar(a_theta, a, width=np.pi/8, color='w')
        ax.spines['polar'].set_visible(False)
        ax.set_xticklabels([])
        ax.set_yticklabels([])
        ax.xaxis.grid(False)
        ax.yaxis.grid(False)
    plt.savefig('foo2.png')
    return fig

1 个答案:

答案 0 :(得分:2)

我认为你正在调整情节之间的重叠。如果重新打开网格,可以看到这些图已经在schematic0中相互撞击并在schematic2中重叠。我不确定是否有更好的方法来摆脱白色空间,而不仅仅是搞乱subplots_adjust命令:

fig.subplots_adjust(left=-0.3, bottom=-0.05, right=1., top=1.05,
                    wspace=-0.45, hspace=-0.15)