plotly express는 Interactive graph를 한 줄로 쉽게 그릴 수 있다는 장점이 있다. 많은 부분을 보기 좋게 자동으로 해 주기 때문에, 크게 손 볼 일이 없다. 하지만 다른 사람에게 보여주기 위해서는 약간 다듬을 필요가 생긴다.

 

그래프를 수정하는 방법은 여러가지가 있다. 그 중 가장 편리한 방법은 그래프를 변수에 저장하고, update_layout함수를 호출하는 것이다. 오늘은 plotly express 그래프의 레이아웃을 변경하는 방법에 대해서 알아보도로 하겠다.

 

 

plotly 그래프

 

 

1. 데이터 준비하기

우선 update_layout을 알아보기 위해 간단한 그래프를 그려보았다. 싸이킷런 패키지를 이용해서 와인 관련된 데이터를 데이터프레임으로 만들었다.

 

import sklearn

import pandas as pd



temp=sklearn.datasets.load_wine()



df=pd.DataFrame(data=temp["data"],columns=temp["feature_names"])

df_target=pd.DataFrame({"target":temp["target"]})

df=pd.concat([df,df_target],1)

df["target"]=df["target"].astype(str)

 


plotly express를 이용해서 산점도를 그려보았다.

 

import plotly.express as px

px.scatter(data_frame=df,x="malic_acid",y="ash", color="target")

 

 

plotly 산점도

 

 

update_layout을 이용하면 타이틀과 X축, Y축을 변경할 수 있다. update_layout함수를 이용하는 방법은 2가지가 있다. 하나는 속성변수에 바로 접근하는 것이고, 다른 하나는 딕셔너리 자료형을 이용하는 것이다.

 

 

2. 타이틀, x축, y축 변경하기

딕셔너리 자료형을 이용해서 아래와 같이 그래프 제목을 변경하였다. 그 다음에 x축 항목값과 문자, 타이틀을 변경하였다. autorange속성을 이용해서 순서 변경도 가능하다.

 

g = px.scatter(data_frame=df,x="malic_acid",y="ash", color="target")

g.update_layout(title=dict({"text":"안녕하세요.","font_size":15}))

g.update_layout(xaxis=dict({"tickvals":[2,4,6],
                            "ticktext":["이","사","욱"],
                            "title":"x축",
                            "autorange":"reversed"}))

 

 

plotly 그래프 타이틀 변경

 

 

'이 속성들을 다 기억할 수 있을까?' 하는 생각이 든다. 그런데, 기억할 필요가 없다. 이상한 항목을 넣어서 에러를 내면, 에러 메시지에서 속성값 설명이 나온다.

 

plotly 속성 확인

 

 

3. 데이터 포인트 변경하기

데이터 포인트를 변경하기 위해서는 update_traces함수를 이용해서 변경한다. 아래와 같이 특정 포인트를 선택하고 색깔을 변경할 수 있다. 포인트를 선택하지 않으면, 모든 포인트의 색깔이 변경된다.

 

g.update_traces(marker={"color":"Black"},
                selector={"name":"0"})

 

 

plotly 데이터 포인트 변경

 

 

그 외에도 선그래프의 선스타일을 점선으로 변경하거나, 색깔의 투명도를 조정, 마커의 모양을 변경하는 일들도 가능하다.

 


그 외에도 update_xaxes, update_layout_images, update_annotations, update_shape 등의 함수가 있다. 위와 같이 딕셔너리 자료형으로 넣는 방법 외에 속성의 값을 바로 변경하는 방법도 있다. 

 

fig.data[0].marker.line.width = 4
fig.data[0].marker.line.color = "black"

 


plotly express 그래프의 레이아웃을 변경하는 방법을 더 자세히 알고 싶다면, 아래 페이지를 참조해보자.
( 참조: https://plotly.com/python/creating-and-updating-figures/ )


오늘은 이렇게 plotly express에서 update_layout함수를 이용해서 그래프를 변경하는 방법에 대해서 알아보았다. 거의 모든 요소를 다 변경할 수 있어서, 원하는 그래프를 만들기에는 부족함이 없을 것이다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기