在seaborn情节中更大的x轴范围

时间:2017-03-17 15:15:57

标签: python matplotlib graph seaborn

我正在使用matplotlib / seaborn绘制条形图,范围是最小值/最大值,加上它会跳过具有0个计数的值。如何填充范围而不跳过0值?

# 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轴值。

1 个答案:

答案 0 :(得分: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