matplotlib中的figsize不会更改图形大小吗?

时间:2018-09-11 11:15:19

标签: python pandas matplotlib

如您所见,代码生成的条形图不太清晰,我想将数字放大,以便可以更好地看到这些值。这没有做。正确的方法是什么? 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的行不会更改初始尺寸。

2 个答案:

答案 0 :(得分:7)

一个选项(如@tda所述),也许是最好/最标准的方法,是将plt.figure放在plt.bar之前:

import matplotlib.pyplot as plt
%matplotlib inline  

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

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

import matplotlib.pyplot as plt
%matplotlib inline  

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

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

import matplotlib.pyplot as plt
%matplotlib inline  

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

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

import matplotlib.pyplot as plt
%matplotlib inline 

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

答案 1 :(得分:1)

在分配图形之前,尝试设置图形的大小,如下所示:

import matplotlib.pyplot as plt
%matplotlib inline  

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