我是新手,尝试使用Jupyter Notebook中的Matplotlib和Seaborn库使用样本数据绘制2个子图,2个子图出来的时候很好,但是2个图例在最右边互相重叠。我想不出一种方法来将第一个子图的图例移到左边。非常感谢您的任何建议!
import matplotlib as mpl
tips = sns.load_dataset("tips")
f = mpl.figure.Figure(figsize=(8, 2), dpi=100)
sf1, sf2 = f.subfigures(1, 2)
(
so.Plot(tips, "total_bill", "tip", color="day")
.facet(col="day")
.add(so.Dot(color="#aabc"), col=None, color=None)
.add(so.Dot())
).on(sf1).plot()
(
so.Plot(tips, "total_bill", "tip")
.add(so.Dot(color="#aabc"))
.add(so.Dot(), data=tips.query("size == 1"), color="time")
).on(sf2).plot()
2条答案
按热度按时间wi3ka0sx1#
这是超级笨重,可能是因为处理传说中的seaborn.objects接口是一个正在进行的工作,但这似乎接近你想要的,我想?
在第一个单元格中,使用发布的解决方案there中的示例。
(我知道上面的代码和情节与你想要的无关;然而,它导入或设置的东西,我不能得到的代码,我认为应该是所有你需要(下面)做它自己。**需要无关的代码和情节是为什么我说它是超级笨重。**但我不能让它工作没有它,它工作得相当不错,当我有它,所以我分享。也许这将有助于找出一个更干净的解决方案。)
在下一个单元格中,放入代码的以下变体:
运行它,它应该看起来更好一点,没有两个传说重叠的最右边。
我不明白为什么需要显示“day”图例,因为这在左侧面板的图中已经处理得很清楚了,所以我使用
pop
方法将其删除。r7s23pms2#
图例分配给每个子图形的方式略有变化