同樣的捣鲸, 先來一波標準導入
from bokeh.io import output_notebook, show
from bokeh.plotting import figure
output_notebook()
總覽
在前面的教程中瑟匆, 我們已經(jīng)見識了Bokeh可以與Python lists, NumPy arrays, Pandas series等等, 完美協(xié)作栽惶。
在底層(At lower levels)愁溜, 這些數(shù)據(jù)(Python lists, NumPy arrays ...)的輸入實際上被Bokeh的ColumnDataSource
統(tǒng)一接收了疾嗅,
并屏蔽了針對這些不同輸入的不同處理過程。
雖然Bokeh常常會幫我們創(chuàng)建這些ColumnDataSource
冕象。 但是有些時候代承,我們直接創(chuàng)建它也是很有用的。
通過Python字典創(chuàng)建
導入:
from bokeh.models import ColumnDataSource
注意: ColumnDataSource
內(nèi)定義的欄位長度必須保持一致
source = ColumnDataSource(data={
'x' : [1, 2, 3, 4, 5],
'y' : [3, 7, 8, 5, 1],
})
在之前的教程樣例中渐扮,我們定義的標記方法(glyph)比如p.circle
论悴,我們都是將坐標數(shù)據(jù)直接寫入對應的參數(shù)中。
其實我們也可以將我們定義的source
屬性賦值給source參數(shù)墓律, 并且用對應的名字寫入?yún)?shù)中膀估。
比如:
p = figure(plot_width=400, plot_height=400)
p.circle('x', 'y', size=20, source=source)
show(p)
通過Pandas的DataFrames創(chuàng)建
通過Pandas data frames直接創(chuàng)建ColumnDataSource
也很簡單, 就是直接將data frame對象傳入ColumnDataSource
即可只锻。
from bokeh.sampledata.iris import flowers as df
source = ColumnDataSource(df)
現(xiàn)在玖像, 我們可以將這個ColumnDataSource
和隊列對應的名字傳入標記方法(glyph)
p = figure(plot_width=400, plot_height=400)
p.circle('petal_length', 'petal_width', source=source)
show(p)
自動轉(zhuǎn)化
事實上, ColumnDataSource
對象在傳入dicts, Pandas DataFrame
或者GroupBy
后能自動創(chuàng)建.
比如:
from bokeh.sampledata.iris import flowers as df
p = figure(plot_width=400, plot_height=400)
p.circle('petal_length', 'petal_width', source=df)
show(p)
轉(zhuǎn)化為角度
from math import pi
import pandas as pd
from bokeh.palettes import Category20c
from bokeh.transform import cumsum
x = { 'United States': 157, 'United Kingdom': 93, 'Japan': 89, 'China': 63,
'Germany': 44, 'India': 42, 'Italy': 40, 'Australia': 35, 'Brazil': 32,
'France': 31, 'Taiwan': 31, 'Spain': 29 }
data = pd.Series(x).reset_index(name='value').rename(columns={'index':'country'})
data['color'] = Category20c[len(x)]
# represent each value as an angle = value / total * 2pi
data['angle'] = data['value']/data['value'].sum() * 2*pi
p = figure(plot_height=350, title="Pie Chart", toolbar_location=None,
tools="hover", tooltips="@country: @value")
p.wedge(x=0, y=1, radius=0.4,
# use cumsum to cumulatively sum the values for start and end angles
start_angle=cumsum('angle', include_zero=True), end_angle=cumsum('angle'),
line_color="white", fill_color='color', legend_field='country', source=data)
p.axis.axis_label=None
p.axis.visible=False
p.grid.grid_line_color = None
show(p)
顏色依據(jù)x軸遞進而改變
from bokeh.transform import linear_cmap
N = 4000
data = dict(x=np.random.random(size=N) * 100,
y=np.random.random(size=N) * 100,
r=np.random.random(size=N) * 1.5)
p = figure()
p.circle('x', 'y', radius='r', source=data, fill_alpha=0.6,
# color map based on the x-coordinate
color=linear_cmap('x', 'Viridis256', 0, 100))
show(p)
通過log_cmap
實現(xiàn)自定義顏色漸變
from bokeh.transform import log_cmap
p = figure()
p.circle(
'x', 'y',
radius='r',
source=data,
fill_alpha=0.6,
# 基于 x 坐標軸的色表
color=log_cmap(
'x', 'Viridis256',
low=5,
high=90,
low_color="blue",
high_color="red"
)
)
show(p)
下一章:四齐饮、添加注解