Python Bokeh xy 散点图和使用调色板的颜色映射

问题描述 投票:0回答:1

我有三个列表,我想在散景中绘制 xy 散点图,但绘图点的颜色取决于 Y 的值,但会缩放到列表“z”中指定的值。请注意,'z' 与 x 和 y 的大小不同

如何做到的

` x = list(range(1, 51)) # 数据点 y = random.sample(range(0, 100), 50) # 观测到的温度 z = list(range(0, 100)) 颜色条温度范围。

source = ColumnDataSource('......??????......') cmap = Linear_cmap(field_name ='?',调色板=“Spectral6”,低=?,高=?)

r = p.scatter(y, y, color=cmap, size=15, source=source)`

我尝试按照“https://docs.bokeh.org/en/latest/docs/examples/basic/data/linear_cmap_colorbar.html”上给出的示例进行操作,但没有取得任何成功。

python bokeh
1个回答
0
投票

这里发生的很多事情需要注意才能充分利用 Bokeh。

1。数据准备

由于您的“z”值(代表比例因子)与“y”(温度)的范围不同,因此您需要对它们进行标准化。一种常见的方法是最小-最大归一化:

import numpy as np

def normalize(data, min_val=0, max_val=1):
    return (data - min(data)) / (max(data) - min(data)) * (max_val - min_val) + min_val

z_normalized = normalize(z) 

2。创建一个ColumnDataSource

您将需要数据源中的标准化“z”值来进行颜色映射。

from bokeh.models import ColumnDataSource

source = ColumnDataSource(dict(
    x=x,
    y=y,
    temperature=y,  # Use 'y' for the color field
    z=z_normalized
))

3.线性颜色映射器

field_name
设置为数据源中包含驱动颜色映射的值的列(在本例中为“温度”)。如果数据中存在异常值,您可能需要缩放颜色映射器的
low
high
值,以确保良好的视觉表示。

from bokeh.models import LinearColorMapper

cmap = LinearColorMapper(field_name='temperature', palette="Spectral6", 
                         low=min(y), high=max(y))  

4。绘制并应用颜色映射

from bokeh.plotting import figure, show 

p = figure(title="Temperature Plot with Color Scaling")
p.scatter('x', 'y', size=15, source=source,
          color={'field': 'temperature', 'transform': cmap})

就像我说的那样,我无法一直掌握它,但理解结构和意图上的这些更大的动作将帮助你获得最后的几个。

© www.soinside.com 2019 - 2024. All rights reserved.