Seaborn FacetGrid PointPlot添加1个网格线

时间:2017-08-23 19:55:09

标签: python seaborn facet-grid

鉴于以下内容:

import seaborn as sns
attend = sns.load_dataset("attention")
sns.set_style("whitegrid", {'axes.grid' : False,'axes.edgecolor':'none'})
g = sns.FacetGrid(attend, col="subject", col_wrap=5,
size=1.5, ylim=(0, 10))
ax = g.map(sns.pointplot, "solutions", "score", scale=.7)

如您所见,我删除了所有网格线。我现在只想添加一个水平网格线:每个绘图的y轴上的值为5。这可能吗?我查看了set_style字典选项here,但没有找到任何帮助。

提前致谢!

1 个答案:

答案 0 :(得分:2)

在绘图中获取网格线作为助手的最简单方法是在每个绘图上画一条线。

for a in g.axes:
    a.axhline(5, alpha=0.5, color='grey')

结果是它基本上是一行代码,而且情节将具有你想要的功能。下行情况是你必须手动指定每一行的去向。 (我假设您想要在生产代码中稍微复杂一点)。好一点就是

for a in g.axes:
    a.axhline(a.get_yticks()[1], alpha=0.5, color='grey')

会抓住一个刻度并为其画一条线。

您可以对单个tick对象执行某些操作以产生类似的效果 - 可以使用a.yaxis.get_major_ticks()访问它们---但我无法使用任何他们的方法对任何影响。