我在Bokeh中使用pandas数据框作为ColumnDataSource绘制散点图,每个气泡代表一个国家。 在我的数据框中,有一个名为“区域”的列,用于通知每个国家/地区的区域,我希望气泡的颜色与它们的区域相对应。 我想使用调色板(例如Viridis)来这样做,但是由于我更习惯于MPL,因此我很难理解它在Bokeh中的工作原理。
source = ColumnDataSource(data=dict(x=df['gdp'],
y=df['lifeExpec'],
s=df['population']/100000))
p = figure(title='Bokeh Bubble Chart',
width=600,
height=500,
x_axis_type='linear',
y_axis_type='linear',
x_range=(1000, 90000),
y_range=(0, 100))
p.scatter(source=source,
x='x',
y='y',
radius = 's',
marker="circle",
alpha = 0.5)
show(p)
答案 0 :(得分:1)
知道了。 将所有区域存储在字典中的变量中,然后使用factor_cmap为每个区域设置颜色。
regions = df['region']
source = ColumnDataSource(data=dict(x=df2['gdp'],
y=df2['lifeExpec'],
s=df2['population']/100000,
ur = regions))
colors = factor_cmap('ur', palette=Category20b_20, factors=regions.unique())
p.scatter(source=source,
x='x',
y='y',
radius = 's',
marker="circle",
alpha = 0.5,
fill_color=colors,
line_color=colors)