使用 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
循环reader
是enumerate
的完美用例。例如,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 时的图形大小的主要内容,如果未能解决你的问题,请参考以下文章