A G*_*ore 4 python pandas seaborn
我为这个问题创建了一个样本数据集
import pandas as pd
from pandas import DataFrame
import seaborn as sns
import numpy as np
sex = np.array(['Male','Female'])
marker1 = np.array(['Absent','Present'])
marker2 = np.array(['Absent','Present'])
sample1 = np.random.randint(0,2,100)
sample2 = np.random.randint(0,2,100)
sample3 = np.random.randint(0,2,100)
df=pd.concat([pd.Series(sex.take(sample1),dtype='category'),pd.Series(marker1.take(sample2),dtype='category'),pd.Series(marker2.take(sample3),dtype='category')],axis=1)
df.rename(columns={0:'Sex',1:'Marker1',2:'Marker2'},inplace=True)
fig =sns.FacetGrid(data=df,col='Sex',hue='Marker2',palette='Set1',size=4,aspect=1).map(sns.countplot,'Marker1',order=df.Marker1.unique()).add_legend()
Run Code Online (Sandbox Code Playgroud)
此代码创建的图是堆叠图
我想要创建的是一个闪避图(来自 R)。如何修改此代码以便我可以看到Marker2存在的并排比较?
小智 5
我有同样的问题,这对我有用。
您可以为sns.countplot调用编写一个包装函数来使用 FacetGrid 命令。
def countplot(x, hue, **kwargs):
sns.countplot(x=x, hue=hue, **kwargs)
grid = sns.FacetGrid(data=df,col='Sex',size=4,aspect=1)
fig = grid.map(countplot,'Marker1','Marker2',palette='Set1',order=df.Marker1.unique())
fig.add_legend()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4792 次 |
| 最近记录: |