차밍이

[Python] Plotly 그래프 사용법 - Scatter Plot 본문

파이썬/데이터 시각화

[Python] Plotly 그래프 사용법 - Scatter Plot

2021. 1. 27. 23:24
반응형

 

    Plotly는 매우 쉽고 예쁘고 반응적인 그래프를 그릴 수 있는 라이브러리입니다.
    기본적으로 JavaScript를 기반으로 하고 있는 것 같습니다.
    파이썬에서 라이브러리를 import해와서 쉽게 사용할 수 있으니 배워서 활용하면 좋을 것 같습니다.

    Scatter Plot 산점도

    Plotly에서 그래프를 그리는 방법이 크게 두가지로 나뉩니다.

    1. Express를 통해서 그리는 방법
    2. Graph_objects를 통해서 그리는 방법

    1. Express

    import plotly.express as px # express 통해서 그리기
    
    fig = px.line(x=["a","b","c"], y=[1,3,2], title="sample figure")
    print(fig) # fig는 JSON형식으로 데이터가 구성된 것을 알 수 있음

    fig 객체는 기본적으로 JSON 형식으로 데이터가 그려집니다.
    fig를 print하면 다음과 같이 JSON 형식의 데이터를 볼 수 있습니다.

    그래프 그리기

     

     

    2. Scatter plot with Plotly Express

    흔히 알고 계시는 iris데이터를 통해서 산점도를 그려보겠습니다.
    기본 데이터는 plotly에 iris 데이터가 저장되어 있으니 불러와서 사용하도록 합니다.

    import plotly.express as px
    df = px.data.iris()
    df.head()

    ** IRIS 데이터 Scatter plot 그리기**

    fig = px.scatter(df, x="sepal_width", y="sepal_length",
                     color="species", # Species 열의 값에 따라서 색깔 표현
                     size='petal_length', # petal_length 에 따라 크기를 변화
                     hover_data=['petal_width'], # 참고할 데이터 추가
                     title='Iris Data - Scatter Plot' # 그래프 타이틀 지정
                    )
    fig.show()

    express에서 scatter메소드를 통해서 scatter plot을 그려줍니다.
    사용할 데이터를 DataFrame에서 넣어준 후, x축 y축을 지정합니다.
    그 외에도 손쉽게 산점도의 크기, 색, hover 등을 설정할 수 있으며, 이를 해당 feature의 값에 따라서 크고 작게 or 색이 밝고 어둡게 등을 표현할 수 있습니다.

    위의 산점도 그래프에서 color, size 를 넣지 않으면 크기가 기본 값, 색도 모두 기본 색상으로 표현됩니다.

    fig = px.scatter(df, x="sepal_width", y="sepal_length",
                     hover_data=['petal_width'], # 참고할 데이터 추가
                     title='Iris Data - Scatter Plot' # 그래프 타이틀 지정
                    )
    fig.show()

    이와 같이 색이나 크기를 통해서 다른 feature를 통해 표현할 수 있습니다.
    그렇기에 단순하게 x축 y축만 표현하는 것이 아닌 3차원, 4차원 적으로 더 많은 feature들을 그래프에 담을 수 있습니다.
    Plotly를 통해서는 쉽게 표현할 수 있으니 매우 좋고 유용하지요.

     

     

     

    3. Scatter plot with Plotly Graph-objects

    Plotly에 있는 또 다른 그래프를 그리는 방식인 graph_objects입니다.
    줄여서 go라고 많이 사용합니다.
    go를 통해서 Figure객체를 선언하고 Figure내에 필요한 DataLayout등을 설정해주는 방식입니다.
    조금은 더 번거롭거나 귀찮을 수 있지만, 자신이 원하는 방식으로 상세하게 커스터마이징 해서 그래프를 그리고 싶다면 graph_objects를 사용하는 것이 좋습니다.

    import plotly.graph_objects as go
    
    fig = go.Figure(data=go.Scatter( # x축 값을 생략한 경우 DataFrame의 Index에 의해 배치됨
        y = df['sepal_length'], # y축 값 sepal_length 값에 따라 배치
        mode='markers', # Scatter Plot을 그리기 위해 Markers 
        marker=dict(    # Marker에 대한 세부적은 설정을 지정
            size=20,    # 점 크기
            color=df['petal_length'], # 색깔 값을 petal_length에 따라 변하도록 설정 
            colorscale='Viridis', # one of plotly colorscales
            showscale=True,  # colorscales 보여줌
            line_width=1, # 마커 라인 두께 설정
        )
    ))
    fig.update_layout(title='Iris Data')
    fig.show()

     

    반응형

    관련된 글 보기

    Comments