python-使用指标变量而不是单列创建多面的matplotlib / seaborn图
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-使用指标变量而不是单列创建多面的matplotlib / seaborn图,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2074字,纯文字阅读大概需要3分钟。
内容图文
![python-使用指标变量而不是单列创建多面的matplotlib / seaborn图](/upload/InfoBanner/zyjiaocheng/667/0f92c21b08fd4222880cefd03eaab933.jpg)
Seaborn非常适合根据对每个构面类别进行编码的分类变量创建构面图.但是,这假设您的类别是互斥的.是否可以基于一组指标变量来创建Seaborn FacetGrid(或类似模型)?
举一个具体的例子,考虑比较被一种或多种病毒感染的患者,并按病毒绘制感兴趣的属性.患者可能携带多种病毒,因此不可能创建病毒栏来创建网格.但是,您可以创建一组指标变量(每种病毒一个),为每个患者标记该病毒.似乎没有将一组指标变量传递给任何Seaborn函数的方法.
我无法想象我是遇到这种情况的第一人,所以我希望有一些建议,而不需要在Matploltlib中手动编码.
解决方法:
我看不到如何使用FacetGrid进行此操作,可能是因为这并未对数据进行分面处理,因为数据记录可能在图中显示多次或仅出现一次.一组位域的标准技巧之一是将它们读取为二进制,因此您会看到位的每种组合.这是明确的,但会造成混乱:
import pandas as pd
import seaborn as sns
from numpy.random import random, randint
from numpy import concatenate
import matplotlib.pyplot as plt
# Dummy data
vdata = pd.DataFrame(concatenate((randint(2, size=(32,4)), random(size=(32,2))), axis=1))
vdata.columns=['Species','v1','v2','v3','x','y']
binary_v = vdata.v1 + vdata.v2*2 + vdata.v3*4
# Making a binary number out of the "virusX?" fields
pd.concat((vdata, binary_v), axis=1)
vdata = pd.concat((vdata, binary_v), axis=1)
vdata.columns=['Species','v1','v2','v3','x','y','binary_v']
# Plotting group membership by row
#g = sns.FacetGrid(vdata, col="Species", row='binary_v')
#g.map(plt.scatter, "x", "y")
#g.add_legend()
#plt.savefig('multiple_facet_binary_row') # Unreadably big.
h = sns.FacetGrid(vdata, col="Species", hue="binary_v")
h.map(plt.scatter, "x","y")
h.add_legend()
plt.savefig('multiple_facet_binary_hue')
如果您有太多指标无法应对组合爆炸,请明确使新子集起作用:
# Nope, need to pull out subsets:
bdata = vdata[vdata.v1 + vdata.v2 + vdata.v3 ==0.]
assert(len(bdata) > 0) # ... catch...
bdata['Virus'] = pd.Series(['none']*len(bdata), index=bdata.index)
for i in ['v1','v2','v3']:
on = vdata[vdata[i]==1.]
on['Virus'] = pd.Series([i]*len(on), index=on.index)
bdata = bdata.append(on)
j = sns.FacetGrid(bdata, col='Species', row='Virus')
j.map(plt.scatter, 'x', 'y')
j.add_legend()
j.savefig('multiple_facet_refish')
内容总结
以上是互联网集市为您收集整理的python-使用指标变量而不是单列创建多面的matplotlib / seaborn图全部内容,希望文章能够帮你解决python-使用指标变量而不是单列创建多面的matplotlib / seaborn图所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。