본문 바로가기

프로그래밍/Python

[Bokeh] 왜 bokeh palette 중에 어떤 것은 factor_cmap() 에서 사용할 때 ValueError 가 발생하나.

728x90

https://stackoverflow.com/questions/48333820/why-do-some-bokeh-palettes-raise-a-valueerror-when-used-in-factor-cmap


왜 bokeh palette 중에 어떤 것은 factor_cmap() 에서 사용할 때 ValueError 가 발생하나?

Why do some bokeh palettes raise a ValueError when used in factor_cmap()


답변1.

bokeh palette 중에 어떤 것은 리스트타입이고 어떤 것은 사전타입이다.

print(type(Spectral6))
print(type(Dark2))

<class 'list'>
<class 'dict'>

Dark2 사전은 실제론 팔레트의 집합이고, 키 값으로 각 팔레트가 나뉘어져 있다.

{3: ['#1b9e77', '#d95f02', '#7570b3'],
 4: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a'],
 5: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e'],
 6: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02'],
 7: ['#1b9e77',
  '#d95f02',
  '#7570b3',
  '#e7298a',
  '#66a61e',
  '#e6ab02',
  '#a6761d'],
 8: ['#1b9e77',
  '#d95f02',
  '#7570b3',
  '#e7298a',
  '#66a61e',
  '#e6ab02',
  '#a6761d',
  '#666666']}

그래서 다음과 같이 사용해야 할 것이다.

pal = Dark2[3]
factor_cmap('cats', palette=pal, factors=factors)

리스트타입 팔레트는 바로 'palette' 인자로 써서 사용하면 된다. 필요한 색보다 많은 색이 있는지만 신경쓰면 된다.

factor_cmap('cats', palette=Spectral6, factors=factors)