plotly express에서 update_layout함수 이용하는 방법은?!

2020. 7. 2. 21:22

plotly express는 Interactive graph를 한 줄로 쉽게 그릴 수 있다는 장점이 있다. 많은 부분을 보기 좋게 자동으로 해 주기 때문에, 크게 손 볼 일은 없으나 다른 사람에게 보여주기 위해서는 약간 다듬을 필요가 있다. 그래프를 수정하는 방법은 여러가지가 있다. 그 중 가장 편리한 방법은 그래프를 변수에 저장하고, update_layout함수를 호출하는 것이다. 오늘은 plotly express 그래프의 레이아웃을 변경하는 방법에 대해서 알아보도로 하겠다.


plotly_express_그래프


우선 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_express_산점도


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


1. 타이틀, 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_express_설명


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

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

g.update_traces(marker={"color":"Black"},

                selector={"name":"0"})


데이터_포인트_변경


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


그 외에도 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함수를 이용해서 그래프를 변경하는 방법에 대해서 알아보았다. 거의 모든 요소를 다 변경할 수 있어서, 원하는 그래프를 만들기에는 부족함이 없을 것이다.

댓글()
  1. Favicon of https://mopipe.tistory.com BlogIcon 인포메틱스 2020.07.08 21:44 댓글주소  수정/삭제  댓글쓰기

    관리자의 승인을 기다리고 있는 댓글입니다