matplotlib中的figsize不会更改图形大小吗?[重复]


问题内容

这个问题已经在这里有了答案

您如何更改用matplotlib绘制的图形的大小? (19个回答)

2年前关闭。

如您所见,代码生成的条形图不太清楚,我想将数字放大,以便可以更好地看到值。这没有做。正确的方法是什么?x是一个数据框,x['user']是图中的x轴,x['number']是y。

import matplotlib.pyplot as plt
%matplotlib inline  
plt.bar(x['user'], x['number'], color="blue")
plt.figure(figsize=(20,10))

带plt.figure的行不会更改初始尺寸。


问题答案:

(由@tda提到的),也可能是最好的/最标准的方式一种选择,就是把plt.figureplt.bar

import matplotlib.pyplot as plt

plt.figure(figsize=(20,10)) 
plt.bar(x['user'], x['number'], color="blue")

如果要在创建图形后设置图形大小,另一种选择是使用fig.set_size_inches(请注意,我plt.gcf在这里用来获取当前图形):

import matplotlib.pyplot as plt

plt.bar(x['user'], x['number'], color="blue")
plt.gcf().set_size_inches(20, 10)

尽管这不是最干净的代码,但可以一行完成所有操作。首先,您需要创建图形,然后获取当前轴(fig.gca),并在其上绘制条形图:

import matplotlib.pyplot as plt

plt.figure(figsize=(20, 10)).gca().bar(x['user'], x['number'], color="blue")

最后,我将指出,通常最好使用matplotlib面向对象的方法,在该方法中,您可以保存对当前图形和轴的引用,并直接在其上调用所有绘图函数。它可能会添加更多行代码,但通常是更清晰的代码(并且您可以避免使用诸如gcf()gca())。例如:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(20, 10))
ax = fig.add_subplot(111)
ax.bar(x['user'], x['number'], color="blue")