Dro*_*ror 4 python visualization bokeh
我有以下简单的说法pandas.DataFrame:
df = pd.DataFrame(
{
"journey": ['ch1', 'ch2', 'ch2', 'ch1'],
"cat": ['a', 'b', 'a', 'c'],
"kpi1": [1,2,3,4],
"kpi2": [4,3,2,1]
}
)
Run Code Online (Sandbox Code Playgroud)
我的情节如下:
import bokeh.plotting as bpl
import bokeh.models as bmo
bpl.output_notebook()
source = bpl.ColumnDataSource.from_df(df)
hover = bmo.HoverTool(
tooltips=[
("index", "@index"),
('journey', '@journey'),
("Cat", '@cat')
]
)
p = bpl.figure(tools=[hover])
p.scatter(
'kpi1',
'kpi2', source=source)
bpl.show(p) # open a browser
Run Code Online (Sandbox Code Playgroud)
我没有按照颜色对点进行颜色编码cat.最终,我希望第一和第三点在相同的颜色,第二和第四点在两种不同的颜色.
如何使用Bokeh实现这一目标?
这是一种在某种程度上避免手动映射的方法.我最近偶然的bokeh.palettes,在这个问题github上,以及CategoricalColorMapper在这个问题上.这种方法结合了它们.查看可用调色板的完整列表在这里和CategoricalColorMapper细节在这里.
我有问题直接在a上工作pd.DataFrame,并且发现它无法使用你的from_df()电话.文档显示DataFrame直接传递,这对我有用.
import pandas as pd
import bokeh.plotting as bpl
import bokeh.models as bmo
from bokeh.palettes import d3
bpl.output_notebook()
df = pd.DataFrame(
{
"journey": ['ch1', 'ch2', 'ch2', 'ch1'],
"cat": ['a', 'b', 'a', 'c'],
"kpi1": [1,2,3,4],
"kpi2": [4,3,2,1]
}
)
source = bpl.ColumnDataSource(df)
# use whatever palette you want...
palette = d3['Category10'][len(df['cat'].unique())]
color_map = bmo.CategoricalColorMapper(factors=df['cat'].unique(),
palette=palette)
# create figure and plot
p = bpl.figure()
p.scatter(x='kpi1', y='kpi2',
color={'field': 'cat', 'transform': color_map},
legend='cat', source=source)
bpl.show(p)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8410 次 |
| 最近记录: |