2017-08-25 24 views
0

我试图从DataFrame中生成一个直方图,seaborn通过DataFrame.hist方法启用,但我一直发现在直方图本身的任何一侧都添加了额外的空间,如红色箭头所示如下图: Histogram with additional spacingSeaborn - 从DataFrame直方图中删除间距

我该如何去除这些空间?代码重现此图如下:

import seaborn as sns 
import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 

from random import seed, choice 
seed(0) 

df = pd.DataFrame([choice(range(250)) for _ in range(100)], columns=['Values']) 

bins = np.arange(0, 260, 10) 

df['Values'].hist(bins=bins) 
plt.tight_layout() 
plt.show() 
+0

当我尝试我的机器中的代码时,开始和结束时没有空格。 – Dark

回答

2

plt.tight_layout()只为你的情节“外边”的效果(刻度线,斧头标签等)。

默认情况下,matplotlib的hist在hist bar-plot周围留下内边距。要禁用你可以这样做:

ax = df['Values'].hist(bins=bins) 
ax.margins(x=0) 
plt.show() 
+0

这确实删除了空格!谢谢。我会稍微留一点问题,看看是否有任何进一步的解释说明为什么会发生这种情况,如果没有出现,请将其标记为答案。 – asongtoruin

+1

使用'xlim'需要知道或确定所需的限制。一个更好的解决方案肯定是使用'ax.margins(x = 0)'在[重复]中(https://stackoverflow.com/questions/42045767/how-can-i-change-the-x-axis-在-matplotlib那么那里 - 是 - 无空格)。 – ImportanceOfBeingErnest

+0

事实上,更新到包括这个更清洁的解决方案 –