ytu*_*ytu 9 python data-visualization aesthetics seaborn
给定以下数据框:
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))
})
Run Code Online (Sandbox Code Playgroud)
我想只用颜色来区分logic线条图中的颜色,并在values 上标记点。具体来说,这是我想要的输出(由R ggplot2绘制):
ggplot(aes(x = n_index, y = value, color = logic), data = df) + geom_line() + geom_point()
Run Code Online (Sandbox Code Playgroud)
我尝试使用做相同的事情seaborn.lineplot,并且指定了markers=True但没有标记:
import seaborn as sns
sns.set()
sns.lineplot(x="n_index", y="value", hue="logic", markers=True, data=df)
Run Code Online (Sandbox Code Playgroud)
然后,我尝试添加style="logic"代码,现在标记出现了:
sns.lineplot(x="n_index", y="value", hue="logic", style="logic", markers=True, data=df)
Run Code Online (Sandbox Code Playgroud)
我也尝试将标记设置为相同样式:
sns.lineplot(x="n_index", y="value", hue="logic", style="logic", markers=["o", "o"], data=df)
Run Code Online (Sandbox Code Playgroud)
看来我必须先指定style才能拥有标记。但是,由于我不想在一个数据维度上使用两个美学维度,因此会导致不希望的绘图输出。这违反了美学映射的原理。
是否可以通过seabornPython可视化使线条和点全部具有相同的样式,但是具有不同的颜色?(seaborn首选-我不喜欢的循环方式matplotlib。)
Imp*_*est 23
您可以直接使用 Pandas 进行绘图。
熊猫通过 groupby
fig, ax = plt.subplots()
df.groupby("logic").plot(x="n_index", y="value", marker="o", ax=ax)
ax.legend(["False","True"])
Run Code Online (Sandbox Code Playgroud)
这里的缺点是需要手动创建图例。
大熊猫通过枢轴
df.pivot_table("value", "n_index", "logic").plot(marker="o")
Run Code Online (Sandbox Code Playgroud)
seaborn 线图
对于seaborn lineplot,似乎一个标记就足以获得所需的结果。
sns.lineplot(x="n_index", y="value", hue="logic", data=df, marker="o")
Run Code Online (Sandbox Code Playgroud)
看到的问题是人们在“标记”和“标记”之间感到困惑。要启用 'marker' 设置 'marker='o'' 不是标记。
sns.lineplot(x=range(1,100),y=err,marker='o')
Run Code Online (Sandbox Code Playgroud)
您需要设置dashes参数来False指定网格的样式"darkgrid":
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.DataFrame({
"n_index": list(range(5)) * 2,
"logic": [True] * 5 + [False] * 5,
"value": list(range(5)) + list(range(5, 10))
})
sns.set_style("darkgrid")
sns.lineplot(x="n_index", dashes=False, y="value", hue="logic", style="logic", markers=["o", "o"], data=df)
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11865 次 |
| 最近记录: |