Похоже, проблема в том, что ваши данные меняются только между месяцами 3 и 11. Индекс месяца начинается с 3, и это соответствует xmin
.Пример, который показывает это с использованием некоторых случайных данных (я сгенерировал их до того, как вы добавили данные):
import seaborn as sns
import pandas as pd
import numpy as np
y = [2011,2012,2013]
years = []
months = []
trips = []
np.random.seed(0)
for ii in range(27):
years.append(y[ii / 9])
months.append(ii % 9+3)
trips.append(np.random.randint(0,10)+(ii / 12)*10)
tr_df = pd.DataFrame({'Month':months, 'Trips':trips, 'Year':years})
fig,ax = plt.subplots(figsize=(12,4))
sns.pointplot(data=tr_df, x='Month', y='Trips', hue='Year', ax=ax,
palette='nipy_spectral', scale=0.7)
ax.set(xlim=(0, 12))
ax.set(title="Number of trips each month")
plt.show()
Это даст
Самый простой способ исправить это (хотя он не исправляет базовые данные и не будет работать во всех случаях) - просто установить пределы вручную для учета смещения -
ax.set(xlim=(-0.5, 8.5))
, который
Если вы хотите включить месяцы ниже минимума (то есть 0,1,2), вы можете установить xticks
и xticklabels
вручную -
ax.set_xticks(range(-3,9))
ax.set_xticklabels(range(0,12))
Что даст вам