使用 plt.subplots 时的图形大小

Posted

技术标签:

【中文标题】使用 plt.subplots 时的图形大小【英文标题】:Size of figure when using plt.subplots 【发布时间】:2013-11-24 19:13:48 【问题描述】:

我在使用plt.subplots 时尝试更改图形大小时遇到​​了一些问题。使用下面的代码,我只得到标准尺寸的图表,其中包含我所有的子图(大约有 100 个),并且显然只是一个额外的空 figuresize 。我尝试过使用tight_layout,但无济于事。

def plot(reader):
    channels=[]
    for i in reader:
        channels.append(i)

    plt.figure(figsize=(50,100))
    fig, ax = plt.subplots(len(channels), sharex=True)

    plot=0    
    for j in reader: 

        ax[plot].plot(reader["%s" % j])
        plot=plot+1

    plt.tight_layout()
    plt.show()

任何帮助都会很棒!

【问题讨论】:

为什么要构造channels 列表,却从不使用它?此外,您的for 循环readerenumerate 的完美用例。例如,for plot, j in enumerate(reader):. 我使用频道列表来说明会有多少个子图。感谢您提供有关枚举的提示 如果你不能做len(reader)len(list(reader)),你总是可以只做N_channels = len([1 for _ in channels]),因为你不需要存储reader的实际内容。 子图文档:matplotlib.org/api/_as_gen/matplotlib.pyplot.subplots.html 【参考方案1】:

您可以删除您的初始plt.figure()。调用plt.subplots() 时会创建一个新图形,因此您第一次调用不会执行任何操作。

后台的subplots命令会为你调用plt.figure(),任何关键字都会被传递。所以只需将figsize 关键字添加到subplots() 命令:

def plot(reader):
    channels=[]
    for i in reader:
        channels.append(i)

    fig, ax = plt.subplots(len(channels), sharex=True, figsize=(50,100))

    plot=0    
    for j in reader: 

        ax[plot].plot(reader["%s" % j])
        plot=plot+1

    plt.tight_layout()
    plt.show()

【讨论】:

谢谢,figsize=(50,100) 是我来这里的目的。

以上是关于使用 plt.subplots 时的图形大小的主要内容,如果未能解决你的问题,请参考以下文章

在双 y 图中拉伸图形大小 [重复]

使用 plt.subplots() 设置标签和图例

在单个循环中使用子图绘制多个图形

为图形添加图例

数据科学:待学习的内容

Matplotlib 奇数子图