2017-03-17 67 views
0

我正在用matplotlib/seaborn繪製條形圖,範圍是最小值/最大值,再加上跳過具有0計數的值。我如何填充範圍並且不跳過0值?seaborn地塊中較大的x軸範圍

# bar 
ax2 = figDayMonth.add_subplot(2,1,2) 
ax2 = sns.countplot(x=np.asarray(dayMonth), palette="pastel") 
ax2.set_title('Days of Month Counts', FontSize=20) 
ax2.tick_params(labelsize=15) 
ax2.set_ylabel("Count", FontSize=16) 
ax2.set_xlabel("Day of Month", FontSize=16) 
sns.despine(left=True, bottom=True, top=True, right=True) 
plt.show() 
print(2*'\n') 

enter image description here

dayMonth與上述計數的整數列表。儘管例如沒有2,29或30個值,但我仍然希望圖表爲這些值保留一個位置。

我試過ax2.set_xticks(np.arange(32)),但似乎只是將我的圖形擠壓到左側而沒有改變x軸值。

+0

願你補充足夠的代碼來運行它,看到了問題產生的呢? – sebas

+0

那麼'dayMonth'列表來自於從外部HD路徑提取文件時間戳,所以我認爲它不會有用 – Austin

+0

'dayMonth'是什麼?它有0個計數的日子嗎?你可能想要閱讀和理解[mcve]。 – ImportanceOfBeingErnest

回答

1

基本上你想繪製輸入列表的直方圖。這直方圖可以使用

x = np.arange(1,33) 
plt.hist(dayMonth, bins=x) 

一個完整的例子是

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

dayMonth = [1,3,12,30,2,3,12,16,18,31,3,13,16,18,30,1,3,12,16,18,30] 
x = np.arange(1,33)  
_,_,bars = plt.hist(dayMonth, bins=x, align="left") 

colors=sns.color_palette(palette="pastel", n_colors=len(x)) 
for color, bar in zip(colors, bars): 
    bar.set_color(color) 
plt.gca().set_xlim(-1,32) 
plt.xticks(x[:-1]) 
plt.show() 

enter image description here