시각화 라이브러리 plotly를 편하게 사용하는 방법
23년 이전 글/python

시각화 라이브러리 plotly를 편하게 사용하는 방법

Plotly

파이썬에서 주로 사용하는 시각화 라이브러리인 Matplotlib과 뚜렷하게 구분되는 라이브러리로, 특히 기본적으로 반응형의 차트를 그려주며, 기본적으로 그려주는게 많은게 장점인 라이브러리이다.

api도 깔끔하고, 특히 문서가 좋아서 이용하게 되었다.

홈페이지에 있는 예제 그림들

 

pie 그래프를 그리는 예제

 

그러나 단점이 있었으니.. 바로 fig.update_traces라는 형태의 api이다

import plotly.express as px
df = px.data.gapminder().query("year == 2007").query("continent == 'Americas'")
fig = px.pie(df, values='pop', names='country',
             title='Population of American continent',
             hover_data=['lifeExp'], labels={'lifeExp':'life expectancy'})
fig.update_traces(textposition='inside', textinfo='percent+label')
fig.show()

fig에는 다양하게 커스텀할 수 있는 객체들이 많아서 이를 fig.update_traces라는 형태로 한번에 설정을 해줄 수 있다.

그러나..

VSCODE내에서 뜨는 update_traces 함수에 뜨는 설명인데, 다음처럼 어떤 정보를 입력할 수 있는지에 대한 명확한 정보가 드러나지 않는다. 물론 파이 그래프의 trace 예시를 보면 어떠한 요소가 들어가는지 문서를 통해서 볼 수는 있다.

그러나 이게 매번 외워지지 않고, 있는지 없는지 여부를 항상 외울수가 없었고, 무엇보다 내부 코드를 하면서 곧장 도움을 받고 싶었다.

따라서 여기에서 설명할 내용은, Plotly에서 공식적으로 권장하는 API는 아니며, 필자가 이해를 바탕으로 편하게 쓰기 위해 방법을 찾아보았다.

 

우선 첫번째 접근할 것으로, 내가 수정하고자 하는 대상을 명확하게 하는 것이다.

pie그래프를 예로 들면, 해당 원 부분은 Data 객체에 해당되는 부분이고, 그 밖에 부분은 전부 레이아웃 부분이다.

위 예제 코드에서 traces를 업데이트 하므로(데이타 영역) 여기에서 똑같은 방법으로 값을 바꿔보겠다

import plotly.express as px
df = px.data.gapminder().query("year == 2007").query("continent == 'Americas'")
fig = px.pie(df, values='pop', names='country',
             title='Population of American continent',
             hover_data=['lifeExp'], labels={'lifeExp':'life expectancy'})
# fig까지만 완료한 상태에서 fig.data의 객체 확인
fig.data

그래프 객체는 여러개가 될 수도 있기 때문에, 기본적으로 Tuple로 반환하는 모습을 보여준다. 여기에선 간단하게 인덱싱을 통해서 파이 그래프 객체로 접근한다.

이제부터 내가 수정가능한 값이 무엇인지, 자유롭게 수정할 수 있다.

pie = fig.data[0]
# pie에 점을 찍어보자

이러한 방법을 사용하면 다음 처럼 vscode내에서 도움을 받을 수도 있으며, dir() 함수를 사용하면 모든 속성값을 빠르게 확인이 가능하다.

한번 무슨 값이 있는지 보고나면 값을 할당해주는 것은 파이썬의 기본 규칙을 활용하면 간단하다.

입력 이후 fig.show()를 해보면 넣은 값이 반영이 된 것을 알 수 있다.

pie.textposition = 'inside'

 

layout에 경우, 몇개의 depth를 가진 상태에서 값을 입력해줘야 하는 경우도 있는데, 이때도 마찬가지로 내가 설정하고자 하는 값에 .을 찍어보면서 더 depth가 있는지 확인하면 쉽게 값을 수정할 수 있다.

기본적으로 title, text를 만질일이 많은데, 해당 값들에 font, font안에 color 또는 family등 설정을 다양하게 건드려줘야 한다.

이러한 방법은 도무지 외워지지 않는 설정 값들을 매번 복사 붙여넣기 하거나,  문서를 참조하여 왔다갔다 해야하는 면을 감소시켜주며, 조금 더 직관적으로, 내가 바꾸고자 하는 값에 직접적으로 영향을 행사하는데 의의가 있다.

이렇게 값을 직접 지정해주게 되면 값 적용 이후의 변화도 직관적으로 바로 확인할 수 있기 때문에 타자는 조금 더 많이 치게되고, 코드 스타일이 반쯤 Matplotlib처럼 되어버리지만 스마트하게 Plotly를 사용할 수 있게 되었다.

 

반응형