2016-10-05 21 views
2

カラムの色をx軸上の値で判断したいと思います。 x軸上の同じ値を持つ棒は、同じ色が割り当てられている必要があります。seaborn barplotのカラム値による色相を定義する

import seaborn as sns 
import matplotlib.pyplot as plt 
import numpy as np 
import pandas as pd 

df = pd.DataFrame(index=['A','B','C','D','E','F'],data={'col1':np.array([2.3423,4.435,9.234,9.234,2.456,6.435])}) 
ax = sns.barplot(x='col1', y=df.index.values, data=df,palette='magma') 

これは、デフォルト設定のときのように見えます。私はこれを行う単純なエレガントな方法があると推測しますが、どのような解決策にも興味があります。ここ

enter image description here

+0

色相を指定してみましたか?別名 '' hue = 'col1''を 'sns.barplot'の引数として追加しました。 – lanery

+0

はそれを修正しません – themachinist

答えて

2

溶液:

import seaborn as sns 
import matplotlib as mpl, matplotlib.pyplot as plt 
import numpy as np 
import pandas as pd 

df = pd.DataFrame(index=['A','B','C','D','E','F'], 
    data={'col1':np.array([2.3423,4.435,9.234,9.234,2.456,6.435])}) 
ax = sns.barplot(x='col1', y=df.index.values, data=df, 
    palette=mpl.cm.magma(df['col1']*.1)) 

mpl.cm.magmaColormapインスタンスであり、間隔からのデータ値(フロート)を変換するために使用される[0,1] Colormap色にを表す。データ値の「自動スケーリング」が必要な場合は、sns.barplot()コールの代わりにpalette=mpl.cm.ScalarMappable(cmap='magma').to_rgba(df['col1'])を使用できます。

ここに出力:barplot

+0

matplotlib正規化オブジェクトを使用して、ここでスカラー係数を手動で指定しないようにしてください。 – mwaskom

+0

@mwaskom、私がノートで提案した 'ScalarMappable'オプションは' Normalize'オブジェクトを自動的に使います。[docs](http://matplotlib.org/api/cm_api.html#matplotlib.cm.ScalarMappable)を見てください。しかし、手で指定されたバージョンでは色がよりきれいに見えました。 :) –

+0

おっと、コードの後の段落を見逃した、申し訳ありません! – mwaskom

関連する問題