plt.xticks()
возвращает x меток мест и меток, поэтому мы можем получить доступ к локациям путем индексации с помощью [0]
. Оказывается, это просто список последовательных целочисленных значений, поэтому мы можем через них l oop и нарисовать линии сетки вручную, с другим стилем для каждого другого. С помощью plt.grid(True, axis='y')
мы гарантируем, что автоматическая сетка c рисуется только для оси y, чтобы это не мешало нашим пользовательским вертикальным линиям.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
np.random.seed(123)
x = np.random.normal(0,1,100)
xx = pd.cut(x,20).to_numpy().astype(str)
yy = np.random.normal(0,1,100)
plt.plot(xx,yy,'o')
plt.xticks(rotation=90)
############################
# new code below #
############################
plt.grid(True, axis='y')
for tick in plt.xticks()[0]:
if tick % 2 == 0:
plt.axvline(tick, color='gray', linestyle='-', linewidth=1, alpha=.5)
else:
plt.axvline(tick, color='red', linestyle='--', linewidth=1, alpha=1)