为了账号安全,请及时绑定邮箱和手机立即绑定

Seaborn 带状图,点前带有小提琴图条

Seaborn 带状图,点前带有小提琴图条

米琪卡哇伊 2022-01-18 17:29:00
我想在抖动带状图后面画一个小提琴图。生成的图在抖动点后面有平均值/标准条,这使得它很难看到。我想知道是否有办法将酒吧放在积分前面。import seaborn as snsimport matplotlib.pyplot as plttips = sns.load_dataset("tips")sns.violinplot(x="day", y="total_bill", data=tips, color="0.8")sns.stripplot(x="day", y="total_bill", data=tips, jitter=True)plt.show()
查看完整描述

2 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

Seaborn 并不关心将它创建的对象暴露给用户。所以需要从轴上收集它们来操纵它们。您要在此处更改的属性是zorder. 所以这个想法可以是

  1. 绘制小提琴

  2. 从轴上收集线和点,给线一个高 zorder,给点一个更高的 zorder。

  3. 最后绘制条形图或群图。这将自动具有较低的 zorder。

例子:

import seaborn as sns

import matplotlib.pyplot as plt

from matplotlib.collections import PathCollection


tips = sns.load_dataset("tips")


ax = sns.violinplot(x="day", y="total_bill", data=tips, color=".8")


for artist in ax.lines:

    artist.set_zorder(10)

for artist in ax.findobj(PathCollection):

    artist.set_zorder(11)


sns.stripplot(x="day", y="total_bill", data=tips, jitter=True, ax=ax)


plt.show()

//img1.sycdn.imooc.com//61e688800001d6df05890438.jpg

查看完整回答
反对 回复 2022-01-18
?
BIG阳

TA贡献1859条经验 获得超6个赞

我刚刚遇到了同样的问题,只需调整以下zorder参数即可解决sns.stripplot:


import seaborn as sns

import matplotlib.pyplot as plt


tips = sns.load_dataset("tips")


sns.violinplot(x="day", y="total_bill", data=tips, color="0.8")

sns.stripplot(x="day", y="total_bill", data=tips, jitter=True, zorder=1)

plt.show()

结果类似于@ImportanceOfBeingErnest 的答案:

//img1.sycdn.imooc.com//61e6888d0001a2c603850262.jpg

查看完整回答
反对 回复 2022-01-18
  • 2 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信