Plotly Gantt Charts 통계 Histogram 배우기

상후·2025년 6월 18일

Plotly 정리

목록 보기
15/18
post-thumbnail

시작하기 전에 import 하기

import plotly.express as px
import plotly.graph_objects as go
import plotly.express as px
import numpy as np

Histogram

Histogram은 마치 Bar plot(막대 차트)와 생김새는 비슷하지만, 순서형 자료와 수치형 자료를 도수분포표를 이용해서 그래프로 나타낸 것을 의미합니다.

지금부터 plotly를 활용해서 Histogram을 그리는 방법에 대해 알아보겠습니다.

Express를 활용한 기본 사용방법

# 직접 입력
px.histogram(x=[데이터])
# 데이터셋을 활용한 입력
px.histogram(data_frame= df, x="total_bill")

[사용 함수]
px.histogram()
[함수 input 내용]
데이터 직접 입력
x = x값 리스트
데이터셋을 활용한 입력
data_frame = pandas 데이터 프레임
x = x값 컬럼 명

예제 1

import plotly.express as px
# 데이터 생성
import numpy as np
x = np.random.randn(500)
fig = px.histogram(x=x)
fig.show()

예제 2

import plotly.express as px
# 데이터 불러오기
df = px.data.tips()
fig = px.histogram(data_frame = df, x="total_bill")
fig.show()


graph_objects를 활용한 기본 사용

fig.add_trace(go.Histogram(y=[데이터]))

[사용 함수]
fig.add_trace() : Trace를 추가할때 사용
go.Histogram() : fig.add_trace() 안에 넣은 Histogram
[함수 input 내용]
x = x값 리스트

예제

import plotly.graph_objects as go
# 데이터 생성
import numpy as np
x0 = np.random.randn(500)
x1 = np.random.randn(500) + 1
# Figure  생성
fig = go.Figure()
# Histogram 추가
fig.add_trace(go.Histogram(x=x0))
fig.add_trace(go.Histogram(x=x1))
fig.show()


Bin 사이즈 변경하기

histogram 시각화에서 가장 중요한 포인트는 최적의 Bin 사이즈 설정하는 것 입니다. Bin 사이즈란 영역을 몇등분 할지 설정을 하는 것 입니다. Bin 사이즈가 너무 크면 영역이 너무 좁아 데이터가 작을 시 빈 영역이 생길 수 있습니다. Bin 사이즈가 너무 작으면 데이터의 경향이 뭍혀버릴 가능성이 높아집니다.

import plotly.express as px
# 데이터 불러오기
df = px.data.tips()
fig = px.histogram(df, x="total_bill", nbins=3)
fig.show()

nbins = 을 통해 영역을 몇개로 나눌지 설정합니다.


histfunc 을 활용하여 다른 계산식 적용하기

histogram 은 기본적으로 영역별 갯수를 count 하여 시각화 하는 방식입니다. 그렇기 때문에 input 데이터는 한개만 필요합니다. 허나 input 데이터를 2개( x, y) 로 가져가서 데이터 영역별 합, 평균, 최소값, 최대값을 구하는 것 또한 구현이 가능합니다.

여기서 핵심은 x, y 두개의 값을 넣어준 것 입니다. x의 영역 별 y의 histfunc 에서 지정한 값을 구합니다.
histfunc : {'count', 'avg', 'sum', ',max', 'min}
count : y값의 갯수를 구하는 것으로 디폴트 값 입니다.
avg : y값의 평균을 구합니다.
sum : y값의 합을 구합니다.
max : 영역에서의 y 최대값을 구합니다.
min : 영역에서의 y 최소값을 구합니다.

normalization 타입 정하기

데이터 normalization 타입 변경이 가능합니다. 따로 설정을 하지 않으면 count 로 표현이 됩니다.

import plotly.express as px
# 데이터 불러오기
df = px.data.tips()
fig = px.histogram(df, x="total_bill", histnorm = 'probability')
fig.show()


막대 겹쳐그리기/위로 쌓기

동시에 2개의 히스토그램을 같이 그릴때 위로 쌓거나 겹치거나 두가지 방법이 있습니다.

fig.update_layout(barmode=방법 설정)

[사용 함수]
fig.update_layout()
[함수 input 내용]
barmode= {'overlay', 'stack'}

예제 1

import plotly.express as px
# 데이터 불러오기
df = px.data.tips()
fig = px.histogram(df, x="total_bill", color="sex") 
fig.update_layout(barmode='stack')
fig.show()

예제 2

import plotly.express as px
# 데이터 불러오기
df = px.data.tips()
fig = px.histogram(df, x="total_bill", color="sex") 
fig.update_layout(barmode='overlay')
fig.show()


히스토그램 가로로 그리기

import plotly.graph_objects as go
import numpy as np
#데이터 생성하기
y = np.random.randn(500)
# Figure 생성
fig = go.Figure()
fig.add_trace(go.Histogram(y=y))
fig.show()

input 값 형식을 x 에서 y로 변경합니다.


히스토그램 스타일 변경하기

fig.update_traces(marker_color= 히스토그램 색, 
                 marker_line_width=히스토그램 테두리 두깨,                         
                 marker_line_color=히스토그램 테두리 색,
                 marker_opacity = 히스토그램 투명도,
                 )

[사용 함수]
fig.update_traces()
[함수 input 내용]
marker_color= 히스토그램 색
marker_line_width=히스토그램 테두리 두깨
marker_line_color=히스토그램 테두리 색
marker_opacity = 히스토그램 투명도

예제

import plotly.express as px
# 데이터 불러오기
df = px.data.tips()
# 히스토그램 생성
fig = px.histogram(df, x="total_bill")
#스타 변경
fig.update_traces(marker_color = 'red', marker_line_width=2, marker_line_color='blue', marker_opacity =0.5)
fig.show()


히스토그램 막대 사이 간격 조정하기

fig.update_layout(bargap=막대 사이 간격, 
                 bargroupgap=같은 그룹 막대 사이 간격,                            
                 )

[사용 함수]
fig.update_layout()
[함수 input 내용]
bargap= 막대 사이 간격
bargroupgap=같은 그룹 막대 사이 간격

예제

import plotly.express as px
# 데이터 불러오기
df = px.data.tips()
# 히스토그램 생성
fig = px.histogram(df, x="total_bill")
#스타 변경
fig.update_layout(bargap=0.2)
fig.show()

profile
개발자를 꿈꾸는 학생

0개의 댓글