在pyplot中,图表的边框/x轴与条形图中的第一个和最后一个条形之间有很大的空间(第一张图中的红色箭头)。在下图中,它在左边的图表中看起来很好,但在右边的图表中浪费了很多空间。图表越大,空间越大。
看看第二张图中浪费了多少空间:
有办法解决吗?
代码:
plt.figure(figsize=figsize)
grid = plt.GridSpec(figsize[1], figsize[0], wspace=120/figsize[0])
plt.suptitle(feature.upper())
# NaN plot
plt.subplot(grid[:, :2])
plt.title('Présence')
plt.ylabel('occurences')
plt.bar([0, 1], [df.shape[0] - nan, nan], color=['#4caf50', '#f44336'])
plt.xticks([0, 1], ['Renseigné', 'Absent'], rotation='vertical')
# Distrib plot
plt.subplot(grid[:, 2:])
plt.title('Distribution')
x_pos = [i for i, _ in enumerate(sizes)]
plt.bar(x_pos, sizes)
plt.xticks(x_pos, labels, rotation='vertical')
plt.show()
df
是我的pandas DataFrame,nan
是我正在绘制的特性的空值数量,sizes
是每个值出现的次数,labels
是相应的标签值。
1条答案
按热度按时间mbjcgjjk1#
可以使用
plt.margins(x=0, tight=True)
。默认边距是
0.05
,这意味着第一个和最后一个x值之间的距离的5%被用作边距。选择一个小的值,如plt.margins(x=0-01, tight=True)
,会留下一点边距,所以条看起来不会粘在轴上。在某些情况下,需要更宽的边距。例如,当只绘制两个非常窄的条时。因此,一个图看起来不错的确切值取决于多种因素以及个人喜好。
请注意,
plt.margins
最好在最后一个向图中添加元素的函数之后调用。还要注意
plt.xlim
也有类似的改变绘图限制的功能。这里有一个例子,它设置xlim
的轴和条之间的距离与条之间的距离相同。