无法在Bokeh .rect字形中按颜色对ColumnDataSource数据进行分组

时间:2017-05-22 20:56:06

标签: python bokeh

我希望根据包含.csv文件中字符串的列按颜色对我的绘图进行分组。 我的印象是" color =' ColumnName'"会工作的。

p.rect(x = range(len(source.data['Project Description'])),
   y = adj_h,
   color= 'Client',
   source = source,
   width = .4,
   height = 'Budget'     
  )

这只是我的矩形字形显示为黑色轮廓而没有填充颜色。

1 个答案:

答案 0 :(得分:0)

使用颜色映射方案绘制散景中的颜色。首先,您需要设置颜色图,以便Bokeh知道哪个颜色用于哪个对象。您可以使用字典colormap = {'Client_1':'red', Client_2:'blue'}手动设置色彩映射表,也可以使用内置的CategoricalColorMapper函数创建色彩映射colormap = CategoricalColorMapper(palette=palette, factors=list_of_factors)

然后您可以在绘图功能中指定颜色。您可以使用包含所有数据点colors = [colormap[x] for x in source['Client']]的所有颜色的列表,然后将颜色传递给图color=colors。或者你可以直接在情节函数color={'field': 'Client', 'transform': colormap}

中让散景为你做转换

在你的代码中,我会尝试像

这样的东西
colormap = CategoricalColorMapper(palette=palette, factors=list(set(data['Client'])))

p.rect(x = range(len(source.data['Project Description'])),
   y = adj_h,
   color = {'field': 'Client', 'transform': colormap}',
   source = source,
   width = .4,
   height = 'Budget'     
  )

根据类别数量选择调色板,数据是原始数据集。

参考文献:

iris.py - 手动为数据集中的每个项目设置颜色并使用绘图中的颜色列表的示例。

texas.py - 使用调色板和颜色映射器,然后让绘图功能使用'transform'设置颜色的示例。