Вы можете использовать параметр palette
для передачи пользовательских цветов для строк в sns.lineplot
, например:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame({'year': [2018, 2019, 2020, 2018, 2019, 2020, 2018, 2019, 2020, ],
'pop': [325, 328, 332, 125, 127, 132, 36, 37, 38],
'country': ['USA', 'USA', 'USA', 'Mexico', 'Mexico', 'Mexico',
'Canada', 'Canada', 'Canada']})
colors = ['red', 'grey', 'grey']
sns.lineplot(x='year', y='pop', data=df, hue='country',
palette=colors, legend=False)
plt.ylim(0, 350)
plt.xticks([2018, 2019, 2020]);
Тем не менее, было бы полезно иметь легенду, поэтому вы также можете подумать о том, чтобы поработать со значениями альфа (последние значения в кортежах ниже), чтобы выделить США.
red = (1, 0, 0, 1)
green = (0, 0.5, 0, 0.2)
blue = (0, 0, 1, 0.2)
colors = [red, green, blue]
sns.lineplot(x='year', y='pop', data=df, hue='country',
palette=colors)
plt.ylim(0, 350)
plt.xticks([2018, 2019, 2020]);