加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用Seaborn,如何从点图中获取所有元素以显示在violoi

发布时间:2020-12-20 12:08:57 所属栏目:Python 来源:网络整理
导读:使用Seaborn 0.6.0,我试图在小提琴图上叠加一个点图.我的问题是小提琴图的个别观察中的“棒”被绘制在点图上的标记之上,如下所示. import seaborn as snsimport matplotlib.pyplot as pltfig,ax = plt.subplots(1,figsize=[12,8])sns.violinplot(x="day",y="
使用Seaborn 0.6.0,我试图在小提琴图上叠加一个点图.我的问题是小提琴图的个别观察中的“棒”被绘制在点图上的标记之上,如下所示.

import seaborn as sns
import matplotlib.pyplot as plt

fig,ax = plt.subplots(1,figsize=[12,8])
sns.violinplot(x="day",y="total_bill",hue="smoker",data=tips,split=True,inner='stick',ax=ax,palette=['white']*2)
sns.pointplot(x="day",y='total_bill',dodge=0.3,join=False)

enter image description here

仔细观察这个图,看起来绿色的误差条是在violoin棒上方(周六看),但蓝色的误差条,以及蓝色和绿色的点都画在小提琴棒的下方.

我尝试将zorder的不同组合传递给两个函数,但这并没有改善绘图外观.我能做些什么来让点图中的所有元素出现在violoinplot的所有元素之上?

解决方法

类似于Diziet Asahi的回答,但更简单一点.由于我们正在设置zorder,因此我们不需要按照我们希望它们出现的顺序绘制绘图,这样可以省去排序艺术家的麻烦.我也正在制作它,以便点图不出现在图例中,它没有用处.

import seaborn as sns
import matploltlib.pyplot as plt

tips = sns.load_dataset("tips")

ax = sns.pointplot(x="day",join=False,palette=['white'])
plt.setp(ax.lines,zorder=100)
plt.setp(ax.collections,zorder=100,label="")

sns.violinplot(x="day",ax=ax)

enter image description here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读