python - 根据 Bokeh 散点图中 ColumnDataSource 中的值设置颜色

标签 python python-3.x bokeh

我在 Bokeh 中使用 pandas 数据框作为 ColumnDataSource 来绘制散点图,其中每个气泡代表一个国家/地区。 在我的数据框中,有一列名为“区域”的列,用于通知每个国家/地区的区域,我希望气泡的颜色与其区域相对应。 我想使用调色板(如 Viridis)来执行此操作,但我很难理解它在 Bokeh 中的工作原理,因为我更习惯 MPL。

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)

最佳答案

明白了。 将所有区域存储在我的字典中的变量中,然后使用 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)

enter image description here

关于python - 根据 Bokeh 散点图中 ColumnDataSource 中的值设置颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50934925/

相关文章:

java - 如何在 Python 中使用 tensorflow 训练图像分类器模型并在 Java 应用程序中使用训练后的模型?

python - 如何在没有 root 访问权限的情况下安装 python 模块?

python - csv.DictReader/csv.DictWriter 与 Panda 库数据框 -

python-3.x - Pytorch:AttributeError:即使已初始化,也无法在 Module.__init__() 调用之前分配模块

python - 我应该如何使用 Bokeh 和 Pandas 绘制带有分类数据的散点图?

python - 我怎么知道所有的 Futures 都在 Tornado 中解决了?

python - 如何编写在 Postgres 列中查找单词的 Django 查询?

python - 为什么 Python 的 sorted() 方法不会反转字典中具有相同值的键的顺序?

python - Datashader canvas.line() 别名

python - 从图形列表中删除 Bokeh Logo