2016-10-05 2 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

당신은 색상을 지정하려고 했습니까? 일명 '색조 ='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 normalize 객체를 사용해야합니다. – mwaskom

+0

@mwaskom, 필자가 제안한'ScalarMappable' 옵션은'Normalize' 객체를 자동으로 사용합니다. [docs] (http://matplotlib.org/api/cm_api.html#matplotlib.cm.ScalarMappable)를보세요. 하지만 손으로 ​​지정한 버전에서는 색이 더 예쁘게 보입니다. :) –

+0

죄송합니다 코드 후 단락을 완전히 놓친 죄송합니다! – mwaskom

관련 문제