ColumnDataSource中的Bokeh圆形图颜色

3

我想用Bokeh在互动圆形图中显示我的群集。我成功地显示了图,但是图上的所有规格都是蓝色的。我想显示它们分为4个群集,因为这是一个聚类分析。

以下是没有实现颜色的代码:

colormap = {0: 'brown', 1: 'green', 2: 'blue', 3: 'purple'}
colors = [colormap[x] for x in df['cluster']]

source = ColumnDataSource(data=df)
hover = HoverTool(tooltips=[('index', '@index'),('Tweets','@Bericht'), ('Polarity','@Polarity'), ('Subjectivity','@Subjectivity')])

p = figure(title = "Sentiment analyse", plot_width=1000, plot_height=500)
p.xaxis.axis_label = 'Polarity'
p.yaxis.axis_label = 'Subjectivity'

p.circle(x='Polarity', y='Subjectivity', source=source, fill_alpha=0.2, size=6)

p.add_tools(hover)



output_file("sentiment.html", title="sentiment.py example")

show(p)

p.circle中添加颜色属性color = colors时,我遇到了错误,因为我需要在source = ColumnDataSource(data = df)中实现颜色。

有人知道如何在ColumnDataSource中实现这个colors属性吗?

1个回答

2
创建一个值为颜色的字典,然后在数据框中创建一个新列。以下是一个简化的示例:
df = pd.DataFrame(data={"col1":[0, 1, 2, 3, 1, 2, 3]})
colors =  {0: "brown", 1: "green", 2: "blue", 3: "purple"}
df["color"] = df["col1"].apply(lambda c: colors[c])

谢谢你,你给了我灵感!我稍微改了一下我的代码。解决方案:df['colors'] = [colormap[x] for x in df['cluster']] - Mightybundy
这是一个不错的解决方案! - Toby Petty
2
你可以使用 df['col1'].map(colors) 替代 apply - Cleb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接