[파이썬] bokeh 지도 시각화 내부의 데이터 포인트 표시

Bokeh는 파이썬에서 사용할 수 있는 강력한 시각화 도구입니다. 이를 사용하여 지도 데이터를 다양하게 시각화하고, 내부에 있는 데이터 포인트를 표시하는 것이 가능합니다.

이번 블로그 포스트에서는 Bokeh를 이용하여 지도 시각화를 생성하고, 데이터 포인트를 표시하는 방법을 살펴보겠습니다.

Bokeh 설치

먼저, Bokeh를 설치해야 합니다. 아래 명령을 사용하여 Bokeh 패키지를 설치합니다.

pip install bokeh

지도 데이터 로드

지도 시각화를 위해서는 지도 데이터를 먼저 로드해야 합니다. Bokeh에서는 다양한 형식의 지도 데이터를 지원하며, 여기서는 GeoJSON 형식의 데이터를 예로 들겠습니다.

from bokeh.io import output_notebook, show
from bokeh.models import GeoJSONDataSource
from bokeh.plotting import figure

# GeoJSON 파일 로드
geojson_file = 'path/to/your/geojson/file.geojson'
geojson = GeoJSONDataSource(geojson=geojson_file)

위 코드에서 geojson_file 변수에 지도 데이터 파일 경로를 설정합니다. 로드된 데이터는 geojson 변수에 저장됩니다.

지도 시각화

지도 데이터를 로드한 후, Bokeh를 사용하여 지도를 시각화할 수 있습니다.

# Bokeh figure 생성
p = figure(title="지도 시각화", toolbar_location="above")

# 지도 데이터 표시
p.patches('xs', 'ys', source=geojson, fill_alpha=0.7, line_color='black', line_alpha=0.3)

위 코드에서 p 변수는 Bokeh의 figure 객체를 생성합니다. title은 지도 시각화의 제목을 설정하며, toolbar_location은 툴바의 위치를 설정합니다.

이후 p.patches() 함수를 사용하여 지도 데이터를 표시합니다. xsys는 지도 데이터의 경계를 나타내는 좌표들을 나타내는 컬럼명입니다. source는 로드한 지도 데이터를 가리킵니다. fill_alpha는 색상의 투명도를 설정하며, line_colorline_alpha는 경계선의 색상과 투명도를 설정합니다.

데이터 포인트 표시

지도 시각화 내부에 데이터 포인트를 표시하려면, 데이터 포인트의 좌표와 속성을 로드하여 Bokeh의 데이터소스에 추가해야 합니다.

# 데이터 포인트 로드
data_points = {
    'lat': [37.5, 37.6, 37.7],
    'lon': [127.0, 127.1, 127.2],
    'name': ['Point A', 'Point B', 'Point C']
}

# 데이터소스 생성
source = ColumnDataSource(data=data_points)

# 데이터 포인트 표시
p.circle(x='lon', y='lat', size=10, color='red', alpha=0.8, source=source)

위 코드에서 data_points 변수에 데이터 포인트의 좌표와 속성을 설정합니다. latlon은 각각 데이터 포인트의 위도와 경도를 나타내는 컬럼명이며, name은 데이터 포인트의 이름을 나타냅니다.

이후 ColumnDataSource 함수를 사용하여 데이터 소스를 생성합니다. source 변수에 데이터 포인트를 가리킵니다.

마지막으로, p.circle 함수를 사용하여 데이터 포인트를 지도 시각화 내부에 표시합니다. xy는 데이터 포인트의 좌표를 설정하며, size는 데이터 포인트의 크기를 설정합니다. color는 데이터 포인트의 색상을 설정하고, alpha는 투명도를 설정합니다. source는 데이터 소스를 가리킵니다.

결과 확인

위 코드의 실행 결과로 생성된 지도 시각화를 확인하기 위해서는 output_notebookshow 함수를 사용합니다.

output_notebook()
show(p)

이렇게 하면 Bokeh를 사용하여 지도 시각화 내부에 데이터 포인트를 표시할 수 있습니다. Bokeh를 통해 다양한 스타일의 시각화를 생성하고, 데이터를 효과적으로 시각화해보세요!