给定以下数据框:
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
,并在 s 上标记点value
。具体来说,这是我想要的输出(由 R ggplot2绘制):
ggplot(aes(x = n_index, y = value, color = logic), data = df) + geom_line() + geom_point()
我试图用 做同样的事情seaborn.lineplot
,我指定markers=True
但没有标记:
import seaborn as sns
sns.set()
sns.lineplot(x="n_index", y="value", hue="logic", markers=True, data=df)
然后我尝试添加style="logic"
代码,现在标记出现了:
sns.lineplot(x="n_index", y="value", hue="logic", style="logic", markers=True, data=df)
我还尝试强制标记采用相同的样式:
sns.lineplot(x="n_index", y="value", hue="logic", style="logic", markers=["o", "o"], data=df)
似乎我必须先指定style
才能拥有标记。但是,这会导致不需要的绘图输出,因为我不想在一个数据维度上使用两个美学维度。这违反了美学映射的原则。
有什么方法可以让线条和点都采用相同的样式但颜色不同,seaborn
或者使用 Python 可视化?(seaborn
是首选 - 我不喜欢循环方式matplotlib
。)