Я не могу контролировать, какая категория данных получает какой маркер на многострочных графиках в морском заливе. Чтобы продемонстрировать, что я пытаюсь сделать здесь, это надуманный пример -
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="ticks")
sns.set_context("paper", rc={"font.size":8,"axes.titlesize":20,"axes.labelsize":15})
fig, ax = plt.subplots()
df = pd.DataFrame({'A': [1,2,3,4,1,2,3,4,1,2,3,4], 'B': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'c'], 'C': [1,1,3,4,1,1,3,3,1,1,2,3]})
sns.lineplot(x='A', y='C', hue='B', hue_order=['c', 'b', 'a'], markers=[{'c': 'X', 'b': 's', 'a': 'o'}], palette={'a': 'Orange', 'b': 'Green', 'c': 'Red'}, dashes=False, data=df, markers=True, ax=ax)
plt.title('A Plot')
ax.set(xlabel='Time', ylabel='#')
ax.legend(title='Legend', loc='upper left', labels=['A', 'B', 'C'])
ax.set(xticks=df['A'].values)
plt.gca().set_position([0, 0, 1, 1])
plt.show()
Но изображение отображается без каких-либо маркеров -
Когда я делаю style='B'
Я получаю следующую ошибку -
ValueError: These `style` levels are missing markers: {'b', 'c'}
Я экспериментировал с style_order=['a', 'b', 'c']
, но получил тот же график, что и выше.
Как я могу получить маркеры с правильной линией сюжета?