seaborn / matplotlib更改图例对象中的列数

时间:2019-05-31 16:08:11

标签: python matplotlib plot seaborn legend

我见过Creating multi column legend in python seaborn plot,但我认为我的问题有些不同。简而言之,我有一个要在<!-- templates/book_detail.html --> {% extends '_base.html' %} {% block content %} {% for book in book_list %} <div> <h2><a href="{% url 'book_detail' book.get_absolute_url %}">{{ book.title }}</a></h2> </div> {% endfor %} {% endblock content %} 的{​​{1}}中绘制并得到一个seaborn的数据框。麻烦的是,lmplot的值很多,所以我得到了一个超长的单列图例。下面的代码示例:

FacetGrid

我可以访问通过调用hue创建的图例对象,这将返回一个类型为ers = sns.lmplot( data=emorb, x="Pb", y="Nd", row="Ridge Sys", hue="Seg Name", scatter=True, fit_reg=False, scatter_kws={"alpha":0.7, "edgecolor": "w"}, palette=sns.color_palette("bright", 20), legend=True ) ers.set(ylim=(0.5122,0.5134)) 的对象(基本上是ers._legend对象)。但是,我无法再调用此图例对象来更改列数,例如,使用:

Legend

有什么建议,或者我是否想念一些更明显的东西,例如重绘图例并指定任何参数的方法?

谢谢。

1 个答案:

答案 0 :(得分:0)

哎呀,想通了:

FacetGrid对象具有属性fig,即

g = sns.lmplot()
parent_mpl_figure = g.fig

因此,如果我在legend=False中设置sns.lmplot(),则可以指定parent_mpl_figure.legend(labels=[], ncol=9, bbox_to_anchor=(1,1))

希望这对其他人/现在很有启发性,以便弄清楚如何使每个Facet跨满整个调色板,以便每个hue组中的不同Facet组更容易区分...