Plotly-Box Plot Violin Plot 및 Contour Plot
이 장에서는 박스 플롯, 바이올린 플롯, 등고선 플롯 및 퀴버 플롯을 포함한 다양한 플롯에 대한 자세한 이해에 중점을 둡니다. 처음에는 상자 그림부터 시작하겠습니다.
상자 그림
상자 그림은 최소값을 포함하는 데이터 세트의 요약을 표시합니다. first quartile, median, third quartile, 및 maximum. 상자 그림에서는 1 사분 위에서 3 사 분위까지 상자를 그립니다. 수직선은 중앙값에서 상자를 통과합니다. 위쪽 및 아래쪽 사 분위수 외부의 변동성을 나타내는 상자에서 수직으로 확장되는 선을 수염이라고합니다. 따라서 상자 그림은 상자라고도하며whisker plot. 수염은 각 사 분위수에서 최소 또는 최대로 이동합니다.
상자 차트를 그리려면 go.Box()함수. 데이터 시리즈는 x 또는 y 매개 변수에 할당 할 수 있습니다. 따라서 상자 그림은 가로 또는 세로로 그려집니다. 다음 예에서는 다양한 지점에있는 특정 회사의 판매 수치가 가로 상자 그림으로 변환됩니다. 최소값과 최대 값의 중앙값을 보여줍니다.
trace1 = go.Box(y = [1140,1460,489,594,502,508,370,200])
data = [trace1]
fig = go.Figure(data)
iplot(fig)
동일한 출력은 다음과 같습니다.
그만큼 go.Box()함수는 상자 플롯의 모양과 동작을 제어하기 위해 다양한 다른 매개 변수를 제공 할 수 있습니다. 하나는 boxmean 매개 변수입니다.
그만큼 boxmean매개 변수는 기본적으로 true로 설정됩니다. 결과적으로 상자의 기본 분포 평균은 상자 내부에 점선으로 그려집니다. sd로 설정하면 분포의 표준 편차도 그려집니다.
그만큼 boxpoints 매개 변수는 기본적으로 "outliers". 수염 외부에있는 샘플 포인트 만 표시됩니다."의심 된 이상치 "인 경우 이상치 포인트가 표시되고 4"Q1-3 "Q3보다 작거나 4"Q3-3 "Q1보다 큰 포인트가 강조 표시됩니다."인 경우 " False "이면 샘플 포인트없이 상자 만 표시됩니다.
다음 예에서 box trace 표준 편차와 특이점으로 그려집니다.
trc = go.Box(
y = [
0.75, 5.25, 5.5, 6, 6.2, 6.6, 6.80, 7.0, 7.2, 7.5, 7.5, 7.75, 8.15,
8.15, 8.65, 8.93, 9.2, 9.5, 10, 10.25, 11.5, 12, 16, 20.90, 22.3, 23.25
],
boxpoints = 'suspectedoutliers', boxmean = 'sd'
)
data = [trc]
fig = go.Figure(data)
iplot(fig)
동일한 출력은 다음과 같습니다.
바이올린 플롯
바이올린 플롯은 다른 값에서 데이터의 확률 밀도를 표시한다는 점을 제외하면 상자 플롯과 유사합니다. 바이올린 플롯에는 데이터의 중앙값에 대한 마커와 표준 상자 플롯에서와 같이 사 분위수 범위를 나타내는 상자가 포함됩니다. 이 상자 그림 위에 겹쳐진 것은 커널 밀도 추정입니다. 박스 플롯과 마찬가지로 바이올린 플롯은 서로 다른 "범주"에서 변수 분포 (또는 샘플 분포)의 비교를 나타내는 데 사용됩니다.
바이올린 플롯은 일반 상자 플롯보다 더 많은 정보를 제공합니다. 사실, 박스 플롯은 평균 / 중앙값 및 사 분위수 범위와 같은 요약 통계 만 표시하는 반면, 바이올린 플롯은full distribution of the data.
바이올린 추적 개체는 go.Violin() 기능 graph_objects기준 치수. 기본 상자 그림을 표시하려면boxplot_visible속성이 True로 설정됩니다. 마찬가지로 설정하여meanline_visible 속성을 true로 설정하면 샘플의 평균에 해당하는 선이 바이올린 내부에 표시됩니다.
다음 예제는 plotly의 기능을 사용하여 바이올린 플롯이 표시되는 방법을 보여줍니다.
import numpy as np
np.random.seed(10)
c1 = np.random.normal(100, 10, 200)
c2 = np.random.normal(80, 30, 200)
trace1 = go.Violin(y = c1, meanline_visible = True)
trace2 = go.Violin(y = c2, box_visible = True)
data = [trace1, trace2]
fig = go.Figure(data = data)
iplot(fig)
출력은 다음과 같습니다.
등고선 플롯
2D 등고선 플롯은 2D 숫자 배열 z의 등고선, 즉 isovaluesz의. 두 변수의 함수의 등고선은 함수가 일정한 값을 갖는 곡선으로, 곡선이 동일한 값의 점을 연결합니다.
어떤 값 Z가 두 입력의 함수로 어떻게 변하는 지 보려면 등고선도가 적합합니다. X 과 Y 그런 Z = f(X,Y). 두 변수의 함수에 대한 등고선 또는 등각 선은 함수가 상수 값을 갖는 곡선입니다.
독립 변수 x와 y는 일반적으로 meshgrid라는 일반 그리드로 제한됩니다. numpy.meshgrid는 x 값 배열과 y 값 배열에서 직사각형 그리드를 만듭니다.
먼저 다음을 사용하여 x, y 및 z에 대한 데이터 값을 생성하겠습니다. linspace()Numpy 라이브러리의 기능. 우리는meshgrid x 및 y 값에서 제곱근으로 구성된 z 배열을 얻습니다. x2+y2
우리는 go.Contour() 기능 graph_objects x를받는 모듈,y 과 z속성. 다음 코드 스 니펫은 x의 등고선 플롯을 표시합니다.y 과 z 위와 같이 계산 된 값.
import numpy as np
xlist = np.linspace(-3.0, 3.0, 100)
ylist = np.linspace(-3.0, 3.0, 100)
X, Y = np.meshgrid(xlist, ylist)
Z = np.sqrt(X**2 + Y**2)
trace = go.Contour(x = xlist, y = ylist, z = Z)
data = [trace]
fig = go.Figure(data)
iplot(fig)
출력은 다음과 같습니다.
등고선 플롯은 다음 매개 변수 중 하나 이상으로 사용자 정의 할 수 있습니다.
Transpose (boolean) − z 데이터를 전치합니다.
만약 xtype (또는 ytype)는 "배열"과 같고 x / y 좌표는 "x"/ "y"로 지정됩니다. "scaled"인 경우 x 좌표는 "x0"및 "dx".
그만큼 connectgaps 매개 변수는 z 데이터의 간격이 채워질 지 여부를 결정합니다.
기본값 ncontours매개 변수는 15입니다. 실제 윤곽 개수는 'ncontours'값보다 작거나 같도록 자동으로 선택됩니다. 'autocontour'가 'True'인 경우에만 효과가 있습니다.
윤곽선 유형은 기본적으로 "levels"따라서 데이터는 여러 수준이 표시된 등고선 플롯으로 표시됩니다. constrain, 데이터는에 지정된대로 음영 처리 된 유효하지 않은 영역이있는 제약 조건으로 표시됩니다. operation 과 value 매개 변수.
showlines − 등고선을 그릴 지 여부를 결정합니다.
zauto 이다 True 기본적으로 입력 데이터 (여기서는 'z') 또는 '에 설정된 경계와 관련하여 색상 도메인을 계산할지 여부를 결정합니다.zmin`및`zmax`기본값은`False`사용자가`zmin`과`zmax`를 설정 한 경우.
퀴버 플롯
퀴버 플롯은 다음과 같이 알려져 있습니다. velocity plot. 속도 벡터를 구성 요소 (u,v) 지점 (x, y)에서. Quiver 플롯을 그리기 위해create_quiver() 정의 된 함수 figure_factory Plotly의 모듈.
Plotly의 Python API에는 아직 포함되지 않은 고유 한 차트 유형을 생성하는 많은 래퍼 함수가 포함 된 Figure 팩토리 모듈이 포함되어 있습니다. plotly.js, Plotly의 오픈 소스 그래프 라이브러리.
create_quiver () 함수는 다음 매개 변수를 허용합니다.
x − 화살표 위치의 x 좌표
y − 화살표 위치의 y 좌표
u − 화살표 벡터의 x 구성 요소
v − 화살표 벡터의 y 성분
scale − 화살표의 크기 조정
arrow_scale − 화살촉의 길이.
angle − 화살촉 각도.
다음 코드는 Jupyter 노트북에서 간단한 퀴버 플롯을 렌더링합니다.
import plotly.figure_factory as ff
import numpy as np
x,y = np.meshgrid(np.arange(-2, 2, .2), np.arange(-2, 2, .25))
z = x*np.exp(-x**2 - y**2)
v, u = np.gradient(z, .2, .2)
# Create quiver figure
fig = ff.create_quiver(x, y, u, v,
scale = .25, arrow_scale = .4,
name = 'quiver', line = dict(width = 1))
iplot(fig)
코드의 출력은 다음과 같습니다.