2017-09-09 9 views
1

Seabornを使用して、各サブプロットにストリップポイントが表示されるようにfactorplotを生成しようとしています。ストリップスロットでは、マーカーのいくつかの側面をコントロールしたいと思います。Seaborn FacetGrid:ストリップポットドッジをマッピングしている間に実装されていません

は、ここで私が試した最初の方法である:

import seaborn as sns 
tips = sns.load_dataset("tips") 
g = sns.FacetGrid(tips, col="time", hue="smoker") 
g = g.map(sns.stripplot, 'day', "tip", edgecolor="black", 
      linewideth=1, dodge=True, jitter=True, size=10) 

とキーワードのほとんどが実装されたが、色相は避けていなかったかわす

output no dodge

せずに次の出力を生成します。これは、正しい出力できます

kws = dict(s=10, linewidth=1, edgecolor="black") 
tips = sns.load_dataset("tips") 
sns.factorplot(x='day', y='tip', hue='smoker', col='time', data=tips, 
      kind='strip',jitter=True, dodge=True, **kws, legend=False) 

は、私は別のアプローチで成功したこの出力で correct output

を、色相を避けています。

私の質問です:なぜg.map(sns.stripplot...)は色合いをかわしていませんでしたか?

答えて

0

hueパラメータが代わりFacetgridからhueとして設定されるので、g.map介しsns.stripplot関数にマッピングする必要があります。

import seaborn as sns 
tips = sns.load_dataset("tips") 
g = sns.FacetGrid(tips, col="time") 
g = g.map(sns.stripplot, 'day', "tip", "smoker", edgecolor="black", 
      linewidth=1, dodge=True, jitter=True, size=10) 

enter image description here

huedodgeはその意味を失うだろうように、各色相値のため、完全なFacetgridのために指定されている場合mapは、time列内の各値に対して個別にsns.stripplotを呼び出し、これは、個々の通話ごとに

source code of map自体を見ない限り、この動作はあまり直感的ではないことに同意できます。上記の溶液は、警告を引き起こすこと

注:

lib\site-packages\seaborn\categorical.py:1166: FutureWarning:elementwise comparison failed; 
    returning scalar instead, but in the future will perform elementwise comparison 
    hue_mask = self.plot_hues[i] == hue_level 

私は正直、これは私たちを言っているかわかりません。今のところ解を破損していないようです。