Bokeh-축
이 장에서는 다양한 유형의 축에 대해 설명합니다.
Sr. 아니요 | 축 | 기술 |
---|---|---|
1 | 범주 형 축 | 보케 플롯은 x 및 y 축을 따라 숫자 데이터를 표시합니다. 축 중 하나를 따라 범주 형 데이터를 사용하려면 둘 중 하나의 범주 형 차원을 지정하는 FactorRange를 지정해야합니다. |
2 | 로그 스케일 축 | x 및 y 데이터 시리즈간에 멱 법칙 관계가있는 경우 두 축 모두에 로그 스케일을 사용하는 것이 바람직합니다. |
삼 | 트윈 도끼 | 단일 플롯 그림에서 다양한 범위를 나타내는 여러 축을 표시해야 할 수 있습니다. Figure 개체는 다음을 정의하여 구성 할 수 있습니다.extra_x_range 과 extra_y_range 속성 |
범주 형 축
지금까지의 예에서 Bokeh 플롯은 x 및 y 축을 따라 숫자 데이터를 표시합니다. 두 축 중 하나를 따라 범주 형 데이터를 사용하려면 한 축에 대한 범주 형 차원을 지정하는 FactorRange를 지정해야합니다. 예를 들어, 주어진 목록에서 x 축에 대한 문자열을 사용하려면-
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
fig = figure(x_range = langs, plot_width = 300, plot_height = 300)
예
다음 예에서는 제공되는 다양한 코스에 등록한 학생 수를 보여주는 간단한 막대 그림이 표시됩니다.
from bokeh.plotting import figure, output_file, show
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
fig = figure(x_range = langs, plot_width = 300, plot_height = 300)
fig.vbar(x = langs, top = students, width = 0.5)
show(fig)
산출
각 막대를 다른 색상으로 표시하려면 vbar () 함수의 color 속성을 색상 값 목록으로 설정합니다.
cols = ['red','green','orange','navy', 'cyan']
fig.vbar(x = langs, top = students, color = cols,width=0.5)
산출
vbar_stack () 또는 hbar_stack () 함수를 사용하여 수직 (또는 수평) 스택 막대를 렌더링하려면 stackers 속성을 연속적으로 스택 할 필드 목록으로 설정하고 source 속성을 각 필드에 해당하는 값을 포함하는 dict 객체로 설정합니다.
다음 예에서 sales는 3 개월 동안 세 제품의 판매 수치를 보여주는 사전입니다.
from bokeh.plotting import figure, output_file, show
products = ['computer','mobile','printer']
months = ['Jan','Feb','Mar']
sales = {'products':products,
'Jan':[10,40,5],
'Feb':[8,45,10],
'Mar':[25,60,22]}
cols = ['red','green','blue']#,'navy', 'cyan']
fig = figure(x_range = products, plot_width = 300, plot_height = 300)
fig.vbar_stack(months, x = 'products', source = sales, color = cols,width = 0.5)
show(fig)
산출
그룹화 된 막대 플롯은 dodge () 함수를 사용하여 막대의 시각적 변위를 지정하여 얻을 수 있습니다. bokeh.transform 기준 치수.
그만큼 dodge() function각 막대 그림에 대한 상대적 오프셋을 도입하여 그룹의 시각적 인상을 얻습니다. 다음 예에서vbar() glyph 특정 월의 각 막대 그룹에 대해 0.25 오프셋으로 구분됩니다.
from bokeh.plotting import figure, output_file, show
from bokeh.transform import dodge
products = ['computer','mobile','printer']
months = ['Jan','Feb','Mar']
sales = {'products':products,
'Jan':[10,40,5],
'Feb':[8,45,10],
'Mar':[25,60,22]}
fig = figure(x_range = products, plot_width = 300, plot_height = 300)
fig.vbar(x = dodge('products', -0.25, range = fig.x_range), top = 'Jan',
width = 0.2,source = sales, color = "red")
fig.vbar(x = dodge('products', 0.0, range = fig.x_range), top = 'Feb',
width = 0.2, source = sales,color = "green")
fig.vbar(x = dodge('products', 0.25, range = fig.x_range), top = 'Mar',
width = 0.2,source = sales,color = "blue")
show(fig)
산출
로그 스케일 축
플롯 축 중 하나의 값이 다른 축의 선형 증가 값에 따라 기하 급수적으로 증가하면 이전 축의 데이터를 로그 스케일로 표시해야하는 경우가 종종 있습니다. 예를 들어, x와 y 데이터 시리즈 사이에 멱 법칙 관계가있는 경우 두 축 모두에 로그 스케일을 사용하는 것이 바람직합니다.
Bokeh.plotting API의 figure () 함수는 x_axis_type 및 y_axis_type을 인수로받습니다. 인수는 이러한 매개 변수 중 하나의 값에 대해 "log"를 전달하여 로그 축으로 지정할 수 있습니다.
첫 번째 그림은 선형 스케일에서 x와 10x 사이의 플롯을 보여줍니다. 두 번째 그림에서 y_axis_type은 'log'로 설정됩니다.
from bokeh.plotting import figure, output_file, show
x = [0.1, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0]
y = [10**i for i in x]
fig = figure(title = 'Linear scale example',plot_width = 400, plot_height = 400)
fig.line(x, y, line_width = 2)
show(fig)
산출
이제 figure () 함수를 변경하여 y_axis_type = 'log'를 구성하십시오.
fig = figure(title = 'Linear scale example',plot_width = 400, plot_height = 400, y_axis_type = "log")
산출
트윈 도끼
특정 상황에서는 단일 플롯 그림에서 다양한 범위를 나타내는 여러 축을 표시해야 할 수 있습니다. 그림 개체는 다음을 정의하여 구성 할 수 있습니다.extra_x_range 과 extra_y_range속성. 그림에 새 글리프를 추가하는 동안 이러한 명명 된 범위가 사용됩니다.
동일한 플롯에 사인 곡선과 직선을 표시하려고합니다. 두 글리프에는 범위가 다른 y 축이 있습니다. 사인 곡선과 선에 대한 x 및 y 데이터 시리즈는 다음과 같이 구합니다.
from numpy import pi, arange, sin, linspace
x = arange(-2*pi, 2*pi, 0.1)
y = sin(x)
y2 = linspace(0, 100, len(y))
여기서 x와 y 사이의 플롯은 사인 관계를 나타내고 x와 y2 사이의 플롯은 직선입니다. Figure 객체는 명시적인 y_range로 정의되며 다음과 같이 사인 곡선을 나타내는 라인 글리프가 추가됩니다.
fig = figure(title = 'Twin Axis Example', y_range = (-1.1, 1.1))
fig.line(x, y, color = "red")
추가 y 범위가 필요합니다. 그것은 다음과 같이 정의됩니다-
fig.extra_y_ranges = {"y2": Range1d(start = 0, end = 100)}
오른쪽에 y 축을 추가하려면 add_layout () 메서드를 사용합니다. 그림에 x와 y2를 나타내는 새 선 글리프를 추가합니다.
fig.add_layout(LinearAxis(y_range_name = "y2"), 'right')
fig.line(x, y2, color = "blue", y_range_name = "y2")
그러면 쌍 y 축이있는 플롯이 생성됩니다. 완전한 코드와 출력은 다음과 같습니다.
from numpy import pi, arange, sin, linspace
x = arange(-2*pi, 2*pi, 0.1)
y = sin(x)
y2 = linspace(0, 100, len(y))
from bokeh.plotting import output_file, figure, show
from bokeh.models import LinearAxis, Range1d
fig = figure(title='Twin Axis Example', y_range = (-1.1, 1.1))
fig.line(x, y, color = "red")
fig.extra_y_ranges = {"y2": Range1d(start = 0, end = 100)}
fig.add_layout(LinearAxis(y_range_name = "y2"), 'right')
fig.line(x, y2, color = "blue", y_range_name = "y2")
show(fig)