如何限制matplotlib图形的边框大小?

8 投票
2 回答
10269 浏览
提问于 2025-04-15 13:16

我正在制作一些比较大的图表,但是边框的空白部分占用了很多像素,这些像素其实可以用来显示数据。看起来图表越大,边框也越大。

这是我图表代码的主要部分:

        import matplotlib
        from pylab import figure

        fig = figure()
        ax = fig.add_subplot(111)
        ax.plot_date((dates, dates), (highs, lows), '-', color='black')
        ax.plot_date(dates, closes, '-', marker='_', color='black')

        ax.set_title('Title')
        ax.grid(True)
        fig.set_figheight(96)
        fig.set_figwidth(24)

有没有办法减少边框的大小?也许有什么设置可以让我把边框保持在大约2英寸的固定大小?

2 个回答

6

试试这个 subplots_adjust 的功能:

subplots_adjust(*args, **kwargs)

fig.subplots_adjust(left=None, bottom=None, right=None, wspace=None, hspace=None)

这个功能可以用来更新子图的参数,使用你提供的设置(如果没有提供就用默认值),并且可以调整子图的位置。

7

看起来你只是想用一个小的子图,那你可以跳过 add_subplot,直接使用 add_axes。这样你就可以指定坐标轴的大小(相对于整个图的大小),所以你可以把它做得尽可能大。在你的情况下,代码可能会像这样:

    import matplotlib.pyplot as plt

    fig = plt.figure()

    # add_axes takes [left, bottom, width, height]
    border_width = 0.05
    ax_size = [0+border_width, 0+border_width, 
               1-2*border_width, 1-2*border-width]
    ax = fig.add_axes(ax_size)
    ax.plot_date((dates, dates), (highs, lows), '-', color='black')
    ax.plot_date(dates, closes, '-', marker='_', color='black')

    ax.set_title('Title')
    ax.grid(True)
    fig.set_figheight(96)
    fig.set_figwidth(24)

如果你愿意的话,甚至可以把 set_figheightset_figwidth 的参数直接放在 figure() 的调用里。

撰写回答