시작하기 전에 import 하기
import plotly.express as px import plotly.graph_objects as go import plotly.express as px import numpy as np
Histogram은 마치 Bar plot(막대 차트)와 생김새는 비슷하지만, 순서형 자료와 수치형 자료를 도수분포표를 이용해서 그래프로 나타낸 것을 의미합니다.
지금부터 plotly를 활용해서 Histogram을 그리는 방법에 대해 알아보겠습니다.
# 직접 입력 px.histogram(x=[데이터]) # 데이터셋을 활용한 입력 px.histogram(data_frame= df, x="total_bill")[사용 함수]
px.histogram()
[함수 input 내용]
데이터 직접 입력
x = x값 리스트
데이터셋을 활용한 입력
data_frame = pandas 데이터 프레임
x = x값 컬럼 명
import plotly.express as px # 데이터 생성 import numpy as np x = np.random.randn(500) fig = px.histogram(x=x) fig.show()
import plotly.express as px # 데이터 불러오기 df = px.data.tips() fig = px.histogram(data_frame = df, x="total_bill") fig.show()
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()
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 = 을 통해 영역을 몇개로 나눌지 설정합니다.
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 타입 변경이 가능합니다. 따로 설정을 하지 않으면 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'}
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()
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()