Несмотря на то, что столбец с годами числовой, Seaborn отображает свои столбчатые диаграммы с категориальной осью X (то есть со всеми строками). Вы можете изменить тики, сначала сохранив тики и их метки в двух массивах, а затем покажите только их часть:
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
df1 = pd.DataFrame(
{'Date': [1962, 1963, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1973, 1974, 1975, 1976, 1977, 1978, 1979,
1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
2012, 2013, 2014, 2015, 2016, 2018, 2019, 2020],
'count': [17, 2, 1, 14, 3, 4, 7, 24, 6, 25, 62, 23, 8, 3, 9, 9, 35, 15, 41, 19, 20, 9, 23, 62, 30,
15, 32, 20, 3, 4, 11, 2, 14, 38, 43, 52, 59, 60, 85, 34, 9, 4, 10, 29, 98, 68, 33, 54, 21,
6, 12, 26, 15, 29, 7, 19]})
ax = sns.barplot(x="Date", y="count", data=df1)
ticks, labels = plt.xticks()
plt.xticks(ticks[::5], labels[::5])
plt.show()
Это может несколько запутать, потому что 3 года не хватает, что не ясно из сюжета. Кроме того, цвета по умолчанию в Seaborn могут сбивать с толку, поскольку они связаны только с течением времени.
Альтернативой является непосредственное использование matplotlib. В этом случае это довольно просто сделать. Matplotlib имеет числовую ось X и автоматически генерирует разумные тики. Кроме того, становится ясно, что 1964, 1972 и 2017 отсутствуют. При необходимости столбцы можно по-прежнему окрашивать в течение года.
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
# df1 = ...
plt.bar(df1["Date"], df1["count"], color='indigo', edgecolor='white')
plt.show()
PS: для окраски с использованием года:
cmap = plt.cm.rainbow
plt.bar(df1["Date"], df1["count"], color=[cmap((d-1962)/60) for d in df1["Date"]])