首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Seaborn 0.12对象自定义图例?

如何使用Seaborn 0.12对象自定义图例?
EN

Stack Overflow用户
提问于 2022-09-07 09:45:38
回答 1查看 113关注 0票数 0

新的Seaborn对象(v0.12)很棒,但是我很难处理图例定制。特别是当使用matplotlib定义子图时。我的代码:

代码语言:javascript
复制
f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(3.5, 3.5), gridspec_kw={'width_ratios':[1.5,1]}, dpi=dpi)
(
     so.Plot(sert_neurons, x='mod_index_late', y='opto_mod_roc', color='sig_modulation')
     .add(so.Dot(pointsize=2))
     .add(so.Line(color='k'), so.PolyFit(order=1), color=None)
     .limit(x=[-1, 1], y=[-1, 1])
     .label(x='Spontaneous 5-HT modulation', y='Task evoked 5-TH modulation')
     .on(ax1)
     .plot()
)
plt.tight_layout()
sns.despine(trim=True)

生成没有任何图例的这个数字 (它似乎位于地块限制之外)。当我做一些类似ax1.legend(frameon=False, prop={'size': 5}, loc='upper left')的事情时,我会得到消息No artists with labels found to put in legend.,我如何将图例移动到子图中并自定义它的外观?

EN

回答 1

Stack Overflow用户

发布于 2022-09-07 11:06:45

从绘图界面中对图例位置的控制仍然是WIP,但是由于您使用的是外部matplotlib对象,所以传递其内容并不困难:

代码语言:javascript
复制
f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)

(
     so.Plot(tips, x='total_bill', y='tip', color='day')
     .add(so.Dot(pointsize=2))
     .add(so.Line(color='k'), so.PolyFit(order=1), color=None)
     .on(ax1)
     .plot()
)
legend = f.legends.pop(0)
ax1.legend(legend.legendHandles, [t.get_text() for t in legend.texts])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73633322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档