我正在使用Seaborn
制作带有表示标准偏差的带的线图。类似于以下文档中的第二/第三情节:
https://seaborn.pydata.org/generated/seaborn.lineplot.html?highlight=lineplot#seaborn.lineplot
我想知道是否可以单独设置误差带的边缘颜色?我可以通过err_kws
更改乐队的线型。但是,如果我通过err_kws
传递“ edgecolor”,似乎什么也没发生。有什么办法可以让我控制边缘吗?
谢谢!
答案 0 :(得分:2)
正如djakubosky所指出的,线的颜色和误差带在seaborn的lineplot
中内部耦合在一起。我建议在情节生成后修改艺术家的属性会更清洁。这是比直接编辑库源代码(维护麻烦等)更简洁的选择。
对于sns.lineplot docs上显示的示例数据,我们可以如下更新误差带属性:
import seaborn as sns
fmri = sns.load_dataset("fmri")
ax = sns.lineplot(x="timepoint", y="signal", data=fmri)
# by inspection we see that the PolyCollection is the first artist
for child in ax.get_children():
print(type(child))
# and so we can update its properties
ax.get_children()[0].set_color('k')
ax.get_children()[0].set_hatch('//')
按演出者的属性进行选择可能比选择第一个演出者(尤其是如果您已经在相同的轴上进行渲染)更健壮。遵循以下原则:
from matplotlib.collections import PolyCollection
for child in ax.findobj(PolyCollection):
child.set_color('k')
child.set_hatch('//')
答案 1 :(得分:1)
在当前的Seaborn实现中,似乎实际上不可能更改此颜色。这是因为它们将主线的颜色作为ax.fillbetweenx(... color = original_color)明确传递给错误带。在过去玩耍之后,我发现此颜色arg似乎取代了其他颜色参数,例如facecolor和edgecolor,因此您在err_kws中输入的内容无关紧要。但是,您可以通过以下方式在site-packages / seaborn / relational.py中编辑第810行来解决此问题:
ax.fill_between(x, low, high, color=line_color, **err_kws)
到
ax.fill_between(x, low, high, **err_kws)
并通过err_kws显式传递颜色。