使散景图散点的颜色和标记取决于数据框的值

时间:2018-07-02 23:15:45

标签: python pandas bokeh

我一直在玩bokeh,以获得交互式散点图,工具提示和交互式图例等。

目前,我可以使用情节后面的pandas数据框中的一列值来设置点的颜色。但是我想知道是否可以使用数据框中的另一列来设置标记类型(菱形,圆形,正方形等)?

我很欣赏,这意味着您需要一个双重说明,但希望这不会有太大问题。

1 个答案:

答案 0 :(得分:1)

从散景0.13.0开始,直接从数据#5884 Create Marker class that encompasses all markers and allow specific marker type to be specified from data

进行参数类型设置仍是一个开放功能请求

在实施之前,最好的办法是利用CDSView models在多个字形方法之间拆分单个数据集:

from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource, CDSView, GroupFilter
from bokeh.sampledata.iris import flowers

source = ColumnDataSource(flowers)

setosa = CDSView(source=source, filters=[GroupFilter(column_name='species', group='setosa')])
versicolor = CDSView(source=source, filters=[GroupFilter(column_name='species', group='versicolor')])
virginica = CDSView(source=source, filters=[GroupFilter(column_name='species', group='virginica')])

p = figure()

p.circle(x='petal_length', y='petal_width', source=source, view=setosa,
         size=10, color='red', alpha=0.6, legend='setosa')

p.square(x='petal_length', y='petal_width', source=source, view=versicolor,
         size=10, color='green', alpha=0.6, legend='versicolor')

p.triangle(x='petal_length', y='petal_width', source=source, view=virginica,
           size=10, color='blue', alpha=0.6, legend='virginica')

p.legend.location = "top_left"
show(p)

enter image description here