Я недавно начал использовать тему dark chesterish
из dunovank , и мне нравится, как хорошо выглядит простой pandas.DataFrame.plot ()как из коробки:
Фрагмент 1 :
# Theme from dunovank, exclude if not installed:
from jupyterthemes import jtplot
jtplot.style()
# snippet from pandas docs:
ts = pd.Series(np.random.randn(1000),index=pd.date_range('1/1/2000', periods=1000)).cumsum()
ax = ts.plot()
Выход 1:

Но я бы хотел добавить чередующийся фоновый цвет (кажется, все в моде с крупными информационными агентствами).Пост Как мне установить цвет фона для определенных областей рисунка пиплота? дает хорошее описание того, как вы можете это сделать.И это действительно просто для числовых значений x :
Фрагмент 2 :
# imports
import pandas as pd
import numpy as np
from jupyterthemes import jtplot
# Sample data
np.random.seed(123)
rows = 50
dfx = pd.DataFrame(np.random.randint(90,110,size=(rows, 1)), columns=['Variable Y'])
dfy = pd.DataFrame(np.random.randint(25,68,size=(rows, 1)), columns=['Variable X'])
df = pd.concat([dfx,dfy], axis = 1)
jtplot.style()
ax = df.plot()
for i in range(0, 60, 20):
ax.axvspan(i, i+10, facecolor='lightgrey', alpha=0.025)
Вывод2:

Но это становится намного грязнее (по крайней мере для меня), когда ось x имеет формат времени или даты,И это потому, что ось в моих двух примерах идет от этого
# in:
ax.lines[0].get_data()
# out:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
dtype=int64)
К этому (сокращенно):
# in:
ts.plot().lines[0].get_data()
# out:
.
.
Period('2002-09-15', 'D'), Period('2002-09-16', 'D'),
Period('2002-09-17', 'D'), Period('2002-09-18', 'D'),
Period('2002-09-19', 'D'), Period('2002-09-20', 'D'),
Period('2002-09-21', 'D'), Period('2002-09-22', 'D'),
Period('2002-09-23', 'D'), Period('2002-09-24', 'D'),
Period('2002-09-25', 'D'), Period('2002-09-26', 'D')], dtype=object)
ts.plot().lines[0].get_data()
возвращает данные по оси X.Но есть ли способ узнать, где matplotlib отображает вертикальные линии для каждого наблюдения 'Jan' , чтобы мне было легче найти приличные интервалы для чередующегося черного и серого цвета фона?

Спасибо за любые предложения!
Редактировать - Или есть тема?
Или кто-нибудь знает, существует ли где-нибудь тема, которую можно бесплатно использовать?Я проверил все темы matplotlib import matplotlib.pyplot as plt; print(plt.style.available)
и Seaborn , но безуспешно.
Правка 2 - предлагаемое решение от ImportanceOfBeingErnest с активированной темой честериста:

По моему скромному мнению, это идеальная установка для графика временного ряда (хотя, возможно, может быть и сплайны)