Учитывая приведенный ниже кадр данных:
import pandas as pd
df = pd.DataFrame({
"n_index": list(range(5)) * 2,
"logic": [True] * 5 + [False] * 5,
"value": list(range(5)) + list(range(5, 10))
})
Я бы хотел использовать цвет и только цвет , чтобы различать logic
на линейном графике и отмечать точки на value
s.В частности, это мой желаемый вывод (график R ggplot2 ):
ggplot(aes(x = n_index, y = value, color = logic), data = df) + geom_line() + geom_point()
![desired output](https://i.stack.imgur.com/6bQ3U.png)
Я пытался сделать то же самоевещь с seaborn.lineplot
, и я указал markers=True
, но маркера не было:
import seaborn as sns
sns.set()
sns.lineplot(x="n_index", y="value", hue="logic", markers=True, data=df)
![sns no markers](https://i.stack.imgur.com/0Asw8.png)
I тогдапопытался добавить style="logic"
в код, теперь маркеры появились:
sns.lineplot(x="n_index", y="value", hue="logic", style="logic", markers=True, data=df)
![sns with markers 1](https://i.stack.imgur.com/H50Ad.png)
Также я попытался заставить маркеры быть в том жестиль:
sns.lineplot(x="n_index", y="value", hue="logic", style="logic", markers=["o", "o"], data=df)
![sns with markers 2](https://i.stack.imgur.com/pQLSq.png)
Похоже, мне нужно указать style
, чтобы получить маркеры.Однако это вызывает нежелательный вывод графика, поскольку я не хочу использовать два эстетических измерения в одном измерении данных.Это нарушает принципы эстетического картирования.
Можно ли как-нибудь иметь линии и точки в одном стиле, но в разных цветах с seaborn
или визуализацией Python?(seaborn
предпочтительнее - мне не нравится циклический способ matplotlib
.)