gpt4 book ai didi

python - Bokeh - 将颜色贴图应用于线条集

转载 作者:行者123 更新时间:2023-12-05 00:40:22 26 4
gpt4 key购买 nike

我有一段代码使用 matplotlib 绘制一组线条并使用颜色图将颜色应用于这些线条。代码摘录和结果如下:

cm = plt.cm.get_cmap('jet')
step = 15
xi = np.linspace(data[data.columns[0]].min(), data[data.columns[0]].max(), 2)
colors_l = np.linspace(0.1, 1, len(state_means[::step]))
for i, beta in enumerate(state_means[::step]):
plt.plot(xi, beta[0] * xi + beta[1], alpha=.2, lw=1, c=cm(colors_l[i]))

Output using matplotlib

这里的代码相关部分是

c=cm(colors_l[i])

在 plt.plot() 函数中。这里可以使用参数(在本例中为 i)对颜色图进行索引。

但是,如果我尝试使用 Bokeh 来完成类似的事情,以及它的 ColorMapper 和 line() 字形,我会遇到错误。相关的代码行和输出是

call_color_mapper = LinearColorMapper(palette="Viridis256", low=min(call_strike_vals), high=max(call_strike_vals))
call_lines=dict()
call_chain_plot = figure(y_axis_label='Call OI', x_axis_label='Dates', x_axis_type = 'datetime')
for strike in call_strikes:
call_lines[strike] = call_chain_plot.line('TIMESTAMP', strike, line_color=call_color_mapper(int(strike[2:])), source=callSource)

TypeError: 'LinearColorMapper' object is not callable

有没有办法在 Bokeh 中使用颜色映射器为一组线条字形着色?

最佳答案

LinearColorMapper 在 Python 中不计算颜色。相反,LinearColorMapper 表示发生在 在浏览器中,在 JavaScript 中的颜色映射。如果你真的需要 Python 中的颜色,你将不得不手动映射它们,有很多方法可以做到这一点。

但您可能不知道,因此在 Bokeh 中执行此操作的最佳方法是使用 multi_line 而不是重复调用 line。这部分是出于性能原因,Bokeh 经过优化以在“矢量化”操作中表现最佳。而且,它还允许您使用 linear_cmap 便利功能为您喜欢的任何数据列制作颜色映射器。这是一个完整的例子:

from bokeh.io import output_file, show
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure
from bokeh.transform import linear_cmap

output_file("cmap.html")

p = figure()

source = ColumnDataSource(data=dict(
xs=[[0,1] for i in range(256)], # x coords for each line (list of lists)
ys=[[i, i+10] for i in range(256)], # y coords for each line (list of lists)
foo=list(range(256)) # data to use for colormapping
))

p.multi_line('xs', 'ys', source=source,
color=linear_cmap('foo', "Viridis256", 0, 255))

show(p)

enter image description here

关于python - Bokeh - 将颜色贴图应用于线条集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50192139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com