Posts [Bokeh] Pie chart
Post
Cancel

[Bokeh] Pie chart

훌륭한 시각화는 자신의 분석내용을 전달하기 위한 가장 효과적인 방법 중 하나입니다.
Bokeh는 Python 라이브러리 중 하나로, 인터렉티브한 시각화 제작에 탁월합니다.
Bokeh의 기본 기능을 소개하는 한편, 앞으로 Bokeh를 바탕으로 제작한 프로젝트를 소개하고자 합니다.
이번 글에서는 그 중 가장 기본적인 pie chart에 관한 글입니다.

pie chart

1
2
3
4
5
6
7
8
9
from math import pi
import pandas as pd

from bokeh.plotting import figure
from bokeh.palettes import Category20c, Blues8
from bokeh.transform import cumsum

from bokeh.io import output_notebook, show
output_notebook()
Loading BokehJS ...

1
2
3
4
5
6
7
8
9
10
11
12
x = { 'United States': 157, 'United Kingdom': 93, 'Japan': 89, 'China': 63,
      'Germany': 44, 'India': 42, 'Italy': 40, 'Australia': 35, 'Brazil': 32,
      'France': 31, 'Taiwan': 31, 'Spain': 29 }

data = pd.Series(x).reset_index(name='value').rename(columns={'index':'country'})
data['color'] = Category20c[len(x)]
#data['color'] = Blues8[len(x)]

# represent each value as an angle = value / total * 2pi
data['angle'] = data['value']/data['value'].sum() * 2*pi

data
countryvaluecolorangle
0United States157#3182bd1.437988
1United Kingdom93#6baed60.851802
2Japan89#9ecae10.815165
3China63#c6dbef0.577027
4Germany44#e6550d0.403003
5India42#fd8d3c0.384685
6Italy40#fdae6b0.366366
7Australia35#fdd0a20.320571
8Brazil32#31a3540.293093
9France31#74c4760.283934
10Taiwan31#a1d99b0.283934
11Spain29#c7e9c00.265616

1
2
3
4
5
6
7
8
9
10
11
12
13
14
p = figure(plot_height=350, title="Pie Chart", toolbar_location=None,
           tools="hover", tooltips="@country: @value")

p.wedge(x=0, y=1, radius=0.4, 
        
        # use cumsum to cumulatively sum the values for start and end angles
        start_angle=cumsum('angle', include_zero=True), end_angle=cumsum('angle'),
        line_color="white", fill_color='color', legend='country', source=data)

p.axis.axis_label=None
p.axis.visible=False
p.grid.grid_line_color = None

show(p)
Bokeh Plot